Java 无法通过代理调用API
我在本地Tomcat服务器上部署了一个java应用程序。这个应用程序需要调用一些API才能正常工作,但不幸的是,我用不同的方法遇到了不同的异常,我不知道如何解决这个问题。当我在本地运行此代码段时,它工作正常。但部署后,它不再工作。 我尝试的第一件事是:Java 无法通过代理调用API,java,api,http,tomcat,Java,Api,Http,Tomcat,我在本地Tomcat服务器上部署了一个java应用程序。这个应用程序需要调用一些API才能正常工作,但不幸的是,我用不同的方法遇到了不同的异常,我不知道如何解决这个问题。当我在本地运行此代码段时,它工作正常。但部署后,它不再工作。 我尝试的第一件事是: CloseableHttpClient httpclient = HttpClients.createDefault(); try { HttpHost target = new HttpHost(apiA
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpHost target = new HttpHost(apiAdress, 443, "HTTPS");
HttpHost proxy = new HttpHost(proxyAdress, 80, "HTTP");
RequestConfig config = RequestConfig.custom()
.setProxy(proxy)
.build();
HttpGet request = new HttpGet(getPath);
request.setConfig(config);
CloseableHttpResponse response = httpclient.execute(target, request);
try {
LOG.debug("----------------------------------------");
LOG.debug(response.getStatusLine().toString());
HttpEntity responseEntity = response.getEntity();
if(responseEntity!=null) {
String responseString = EntityUtils.toString(responseEntity);
return JsonUtils.getObjectFromJson(responseString, NachrichtenResponse.class);
}
} catch (Exception e) {
LOG.error(e.getMessage(),e);
} finally {
response.close();
}
} catch (Exception ex) {
LOG.error(ex.getMessage(),ex);
} finally {
try {
httpclient.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
这导致以下例外情况:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:146)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
... 106 common frames omitted
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
当我像这样将代理的方案更改为HTTPS时
HttpHost proxy = new HttpHost("94.100.132.14", 80, "HTTPS");
这导致以下例外情况:
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:146)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
... 106 common frames omitted
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
在没有配置代理的情况下,异常连接被拒绝。我真的不知道问题出在哪里,我很难弄明白。有没有人曾经遇到过类似的问题并有解决方案?您不需要将证书添加到信任库吗?您是否尝试通过谷歌搜索异常消息?因为80是http端口,所以尝试使用
新的HttpHost(“94.100.132.14”,80,“http”)
?当您说“部署后”,你的意思是说你部署在“组织”基础设施中?通常,有很多防火墙和网络配置用于传入和传出流量。您是在回答还是只是要求澄清?后者应在评论中发布。请重新措辞,避免给人留下澄清问题的印象。把这变成一个自信的回答。