【发布时间】:2017-04-29 07:15:55
【问题描述】:
最近在使用 HttpClient 在 Java 应用程序中访问 3rd 方服务(CURL 服务)时,我遇到了如下问题:
javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
....
我在 JDK 7 中遇到了这个问题。通过对这个问题的一些研究,我发现了 2 个建议,即
- 在您的 JDK 7 信任库中添加该特定第 3 方的证书。 [我尝试过但仍然遇到同样的问题]
- 使用 JDK 8 而不是 JDK 7 [我试过了,对我有用]
所以我想了解 与 Java 7 或更低版本相比,Java 8 中的 SSL 握手是如何发生的?我可以在 JDK7 中解决这个问题
代码片段
public String getProduct(final String accessToken) throws IOException, ParseException {
log.info("accessToken: " + accessToken);
final String stringUrl = "https://api.molt.in/v1/products";
HttpClient httpClient = HttpClientBuilder.create().build();
HttpGet getRequest = new HttpGet(stringUrl);
getRequest.setHeader("Authorization", "Bearer " + accessToken);
HttpContext httpContext = new BasicHttpContext();
HttpResponse response = httpClient.execute(getRequest, httpContext);
log.info("Response Code : " + response.getStatusLine().getStatusCode());
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line);
}
log.info("result: " + result);
rd.close();
return result.toString();
}
~问候,
陈丹
【问题讨论】:
标签: java ssl httpclient