Eclipse旧项目调用REST API报Connection Refused错误咨询
排查步骤
- 检查JVM代理配置
旧Swing项目大概率在启动参数中配置了http/https代理,和测试用的控制台项目JVM参数不同。你可以在请求发送前添加如下代码打印代理配置:
System.out.println(System.getProperty("http.proxyHost")); System.out.println(System.getProperty("http.proxyPort")); System.out.println(System.getProperty("https.proxyHost")); System.out.println(System.getProperty("https.proxyPort"));
如果有非空输出,说明项目配置了无效代理,要么删除对应启动参数,要么给HttpURLConnection显式指定无代理模式:
HttpURLConnection httpURLConnection = (HttpURLConnection) requestURL.openConnection(Proxy.NO_PROXY);
- 校验请求URL准确性
确认旧项目中替换后的实际API地址和测试项目完全一致,检查是否有遗漏替换占位符、多余空格换行、协议/端口填写错误的问题,可以在URL创建后添加打印校验:
System.out.println(requestURL.toString());
- 检查Java安全策略限制
2000年代的老Java项目常配置安全策略限制网络访问,可添加如下代码确认是否存在安全管理器:
System.out.println(System.getSecurityManager());
如果输出非空,需要修改对应安全策略文件,给应用授予Socket连接权限。
- 核对Eclipse运行配置
右键旧项目依次点击Run As→Run Configurations,检查两个配置项:
- JRE标签页的Java版本是否和测试用控制台项目一致,确认是公司统一的Java 8
- Arguments标签页的VM参数栏是否有额外的网络相关配置
提供的测试代码参考(未修改原大小写规则)
public void CheckStatus() throws IOException { URL requestURL = new URL(#REST API URL#); HttpURLConnection httpURLConnection = (HttpURLConnection) requestURL.openConnection(); httpURLConnection.setRequestMethod(“GET”); //display REST API response in console try (BufferedReader br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(), “utf-8”))) { StringBuilder response = new StringBuilder(); String responseLine; while ((responseLine = br.readLine()) != null) { Response.append(responseLine.trim()); } System.out.println(response,toString(); } catch (IOException e) { e.printStackTrace(); } }
内容的提问来源于stack exchange,提问作者WackyV
相关产品推荐
相关产品推荐

