请告诉我禁用证书验证的方法,将Unirest用作其他客户端。
我使用Unirest和Java Spring。以下是我的源代码:
try {
HttpResponse<String> response = Unirest.post("myurl")
.header("content-type", "application/json")
.header("accept", "application/json")
.body("my json data here")
.asJson();
} catch (Exception e) {
logger.info("==================REST CLIENT ERROR: "+e.getMessage());
}
结果:
================== REST客户端错误:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到所请求目标的有效证书路径
答案 0 :(得分:2)
我知道这个线程很旧,但是只是在编写以防别人正在寻找更简单的方法。
Unirest现在已对此提供内置支持。
Unirest.config().verifySsl(false);
这对我有用。
答案 1 :(得分:0)
在触发您的http发布请求之前,将一个自定义的http客户端设置为Unirest,如下所示:
try {
SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustSelfSignedStrategy() {
public boolean isTrusted(X509Certificate[] chain, String authType) {
return true;
}
}).build();
HttpClient customHttpClient = HttpClients.custom().setSSLContext(sslContext)
.setSSLHostnameVerifier(new NoopHostnameVerifier()).build();
Unirest.setHttpClient(customHttpClient);
HttpResponse<JsonNode> response = Unirest.post("myurl")
.header("content-type", "application/json")
.header("accept", "application/json")
.body("my json data here")
.asJson();
} catch (Exception e) {
logger.info("==================REST CLIENT ERROR: " + e.getMessage());
}
顺便说一句,请注意asJson方法返回的是JsonNode类型,而不是String。