Java 无法通过可执行jar文件调用API
我已经编写了一个java方法,它调用日语字典的API->解析JSON响应->将第一个节点(字符串)返回给调用者,作为英语单词的适当翻译。 当从EclipseIDE执行该程序时,它工作得非常好。 然而,当我运行它的可执行jar(使用Eclipse的导出特性创建)时 我没有收到API的任何响应。 我无法理解这种行为的原因,如果有人在这方面指导我,我会很有帮助 当我执行整个程序时,我总是在控制台上打印“GetRequestNotWorked”Java 无法通过可执行jar文件调用API,java,eclipse,executable-jar,Java,Eclipse,Executable Jar,我已经编写了一个java方法,它调用日语字典的API->解析JSON响应->将第一个节点(字符串)返回给调用者,作为英语单词的适当翻译。 当从EclipseIDE执行该程序时,它工作得非常好。 然而,当我运行它的可执行jar(使用Eclipse的导出特性创建)时 我没有收到API的任何响应。 我无法理解这种行为的原因,如果有人在这方面指导我,我会很有帮助 当我执行整个程序时,我总是在控制台上打印“GetRequestNotWorked” java-jar JtoETranslate.jar Ja
java-jar JtoETranslate.jar
Java方法:
public static String sendGET(String param) throws IOException
{
BufferedWriter writer = null;
Properties systemSettings = System.getProperties();
systemSettings.put("proxySet", "true");
systemSettings.put("http.proxyHost","172.29.44.61");
systemSettings.put("http.proxyPort", "8080");
URL obj = new URL(GET_URL+param);
HttpURLConnection con = (HttpURLConnection)obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK)
{
BufferedReader in = new BufferedReader(new InputStreamReader(
con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
// print result
try
{
writer = new BufferedWriter( new FileWriter("./docs/response.json"));
writer.write(response.toString());
}
catch ( IOException e)
{
}
finally
{
try
{
if ( writer != null)
writer.close( );
return parseJSON("./docs/response.json");
}
catch ( IOException e)
{
}
}
System.out.println("Got response");
} else {
System.out.println("GET request not worked");
}return null;
}
编辑
正如下面的一条评论中所建议的,我添加了一条调试语句,以查看形成的请求是什么,下面是对API的请求
有谁能帮助我了解如何让Jar理解UTF-8编码。您是否尝试在admin modus中运行Jar?如果您打算自己解决此问题,我建议您尝试以下方式进行远程调试。或者你能把你写的所有代码都发出去吗?@Casper是的,我发了。但同样的问题依然存在,可能是您需要创建清单并定义程序所需的特权。例如互联网连接。看看这个url:您应该添加一些调试代码。如何在命令行上设置参数?服务器返回的实际HTTP响应代码是什么?是否引发异常?。。。