我正在尝试使用 Java 转换调用 rest API 获取编译错误,因为找不到符号集 Requestmethod
I am trying to invoke rest API using Java transformation getting compile error as cannot find symbol set Requestmethod
下面是java包和编写的代码。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.HttpURLConnection;
import java.util.HashMap;
import java.net.URLConnection;
import java.io.OutputStream;
import java.io.Reader;
import java.io.BufferedReader;
import java.io.InputStream;
try{
URL url=new URL("https://dit2--abc.com");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Authorization",access_token);
conn.setRequestMethod("POST");
conn.setRequestProperty("Accept","application/json");
String requestBody ="{\"Id\":\"Id\", \"OwnerId\":\"OwnerId\"}";
try(OutputStream os =conn.getOutputStream()){
byte[] input=requestBody.getBytes("utf-8");
os.write(input,0,input.length);
} catch(Exception e) {
System.out.println(e);
}
// String line;
StringBuffer response= new StringBuffer();
BufferedReader reader =new BufferedReader(new InputStreamReader(conn.getInputStream()));
if (conn.getResponseCode() ==HttpURLConnection.HTTP_OK){
while ((line=reader.readLine())!= null){
response.append(line);
}
fi= response.toString().substring(response.toString().length() -10);
}
reader.close();
}catch(Exception e){
logInfo("Error");
fi =e.toString();
}
以上代码是更新后的代码,编译后没有报错但是工作流一直在运行没有结束,好像代码在循环运行
请检查此代码。
我会尝试逐一检查错误,即使是您的屏幕截图中未显示的错误:
第 200 行:upper/lowercase 构造函数问题 Url()
,应该是 URL url = new URL("https://ditabc.com");
第 210 行:您需要为 e 声明异常 class,因此 } catch (java.io.IOException e) {
在这里是正确的。
第 213 行:您不能在此处执行 os.flush();
,因为 os
仅在上面的 try-with-resources 块中已知。 os
也会在 try-with-resources 块完成时自动关闭,因此根本不需要刷新。
第217行:全是错别字,应该是BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
第218行:你不能将连读都没有读出的StringBuffer response
和整型常量进行比较。应该是 if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
第 223 行:您没有要关闭的 writer
,只需删除此行。
225行:这个问题是218行的if (response==HttpURLConnection.HTTP_OK){
引起的,没有正常关闭。你把缩进弄乱了一点所以你不容易看到它,但是在第 222 行的 fi= response.toString().substring(response.toString().length() -10);
之后有一个 }
缺失。
第 225 行之后的所有错误都在生成的代码中,因此它们可能来自我已经提到的缺失 }
。
您没有类似地处理所有异常,您确定这是正确的方法吗?
我很确定第 207 行到第 212 行中的内部 try-with-resources 块会引起麻烦:如果您无法成功写出请求,那么之后尝试读取响应就没有意义了。我会简单地得到 os
而没有额外的 try-catch 块,然后关闭它而不是第 223 行中的 writer
。
你还漏掉了一个重要的步骤:你没有连接。
在执行 OutputStream os = conn.getOutputStream()
.
之前添加 conn.connect()
您粘贴的代码还缺少几个 import
语句,这些语句将无法编译:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
(我在代码中看到代码生成器会插入导入的部分,在你的问题的前一个版本中,你在一段额外的代码中有一些导入。你需要导入上面的 class 不知何故,但不是与您自己的代码片段合而为一。)
作为一般建议:不要尝试使用该工具学习 Java,使用为您生成代码并且仅提供没有语法高亮显示等的编辑器的开发环境真的很难。(我从使用类似工具的经验中知道这一点。)
更新:在第 214 行的 try-with-resources 块中,您首先错过了上述导入之一(您导入了 java.io.OutputStreamReader
,但它必须是 java.io.OutputStream
)和关键字 new
这里打扰了,请删除
下面是java包和编写的代码。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.HttpURLConnection;
import java.util.HashMap;
import java.net.URLConnection;
import java.io.OutputStream;
import java.io.Reader;
import java.io.BufferedReader;
import java.io.InputStream;
try{
URL url=new URL("https://dit2--abc.com");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestProperty("Authorization",access_token);
conn.setRequestMethod("POST");
conn.setRequestProperty("Accept","application/json");
String requestBody ="{\"Id\":\"Id\", \"OwnerId\":\"OwnerId\"}";
try(OutputStream os =conn.getOutputStream()){
byte[] input=requestBody.getBytes("utf-8");
os.write(input,0,input.length);
} catch(Exception e) {
System.out.println(e);
}
// String line;
StringBuffer response= new StringBuffer();
BufferedReader reader =new BufferedReader(new InputStreamReader(conn.getInputStream()));
if (conn.getResponseCode() ==HttpURLConnection.HTTP_OK){
while ((line=reader.readLine())!= null){
response.append(line);
}
fi= response.toString().substring(response.toString().length() -10);
}
reader.close();
}catch(Exception e){
logInfo("Error");
fi =e.toString();
}
以上代码是更新后的代码,编译后没有报错但是工作流一直在运行没有结束,好像代码在循环运行
请检查此代码。
我会尝试逐一检查错误,即使是您的屏幕截图中未显示的错误:
第 200 行:upper/lowercase 构造函数问题 Url()
,应该是 URL url = new URL("https://ditabc.com");
第 210 行:您需要为 e 声明异常 class,因此 } catch (java.io.IOException e) {
在这里是正确的。
第 213 行:您不能在此处执行 os.flush();
,因为 os
仅在上面的 try-with-resources 块中已知。 os
也会在 try-with-resources 块完成时自动关闭,因此根本不需要刷新。
第217行:全是错别字,应该是BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
第218行:你不能将连读都没有读出的StringBuffer response
和整型常量进行比较。应该是 if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
第 223 行:您没有要关闭的 writer
,只需删除此行。
225行:这个问题是218行的if (response==HttpURLConnection.HTTP_OK){
引起的,没有正常关闭。你把缩进弄乱了一点所以你不容易看到它,但是在第 222 行的 fi= response.toString().substring(response.toString().length() -10);
之后有一个 }
缺失。
第 225 行之后的所有错误都在生成的代码中,因此它们可能来自我已经提到的缺失 }
。
您没有类似地处理所有异常,您确定这是正确的方法吗?
我很确定第 207 行到第 212 行中的内部 try-with-resources 块会引起麻烦:如果您无法成功写出请求,那么之后尝试读取响应就没有意义了。我会简单地得到 os
而没有额外的 try-catch 块,然后关闭它而不是第 223 行中的 writer
。
你还漏掉了一个重要的步骤:你没有连接。
在执行 OutputStream os = conn.getOutputStream()
.
conn.connect()
您粘贴的代码还缺少几个 import
语句,这些语句将无法编译:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
(我在代码中看到代码生成器会插入导入的部分,在你的问题的前一个版本中,你在一段额外的代码中有一些导入。你需要导入上面的 class 不知何故,但不是与您自己的代码片段合而为一。)
作为一般建议:不要尝试使用该工具学习 Java,使用为您生成代码并且仅提供没有语法高亮显示等的编辑器的开发环境真的很难。(我从使用类似工具的经验中知道这一点。)
更新:在第 214 行的 try-with-resources 块中,您首先错过了上述导入之一(您导入了 java.io.OutputStreamReader
,但它必须是 java.io.OutputStream
)和关键字 new
这里打扰了,请删除