我正在尝试使用CloseableHttpClient通过HTTPS连接到Web服务器。但是,每当我尝试打开连接时,客户端都会抛出NoHttpResponseException。
当我尝试cURL或Wget到同一个网络服务器时,我只能使用-k
和--no-check-certificate
(分别)正确地执行此操作,这让我觉得这是一个与SSL相关的问题证书。我已经为我的HttpClient添加了一个SSLContext(下面的代码),但它没有效果。
SSLContextBuilder sslContextBuilder = SSLContexts.custom();
sslContextBuilder.setSecureRandom(new java.security.SecureRandom());
sslContextBuilder.loadTrustMaterial(null, new TrustStrategy() {
public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
return true;
}
});
SSLContext sslContext = sslContextBuilder.build();
stacktrace看起来像这样:
INFO:处理{s}请求时遇到的I / O异常(org.apache.http.NoHttpResponseException) - > https://server.com:443:目标服务器无法响应 2017年6月30日下午4:20:53 org.apache.http.impl.execchain.RetryExec执行 信息:正在重试{s} - > https://server.com:443的请求 例外: org.apache.http.NoHttpResponseException:server.com:443无法响应 at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:141) at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56) 在org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259) at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163) 在org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:165) at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273) 在org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125) 在org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272) 在org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185) 在org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) 在org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) 在org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) 在org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
有没有人遇到过这类问题?
感谢您的帮助,