我正在尝试通过禁用 SSL 证书检查来访问启用 SSL 的 Rest API,如下所示;
TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
SSLContext.setDefault(sc);
HostnameVerifier allHostsValid = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
String auth = "<<username>>:<<password>>";
byte[] authBytes = auth.getBytes(StandardCharsets.UTF_8);
String encodedAuth = Base64.getEncoder().encodeToString(authBytes);
String url = "myURLHere";
Client client = ClientBuilder.newBuilder().sslContext(sc).hostnameVerifier(allHostsValid).build();
String input = "myJsonHere";
Response response = client
.target(url)
.request()
.header("Authorization", "Basic " + encodedAuth)
.post(Entity.json(input));
参考:https ://stackoverflow.com/a/27398820/11226302
但是,我收到以下回复;
InboundJaxrsResponse{context=ClientResponse{method=POST, uri=myURLHere, status=502, reason=cannotconnect}}
我还使用 HttpsURLConnection 尝试了类似的逻辑。
参考:https ://stackoverflow.com/a/876785/11226302
得到一个类似的错误如下;
java.lang.RuntimeException:失败:HTTP 错误代码:502cannotconnect
我需要这样做以进行测试,但现在无法继续。
我能够使用 curl 和 Postman Client 获得正确的响应(如本问题的标题中所述)任何人都可以提出这里可能出现的问题吗?
我正在使用 java 8
仅供参考,生产将设置证书。我正在做这个不安全的配置,以便我可以从我的本地设置中调用这个 Rest API。