java 通过httpclient调用https 的webapi

java如何通过httpclient 调用采用https方式的webapi?如何验证证书。
示例:https://devdata.osisoft.com/p...
需要通过httpclient调用该接口,没有做过https 方式的调用不知道怎么解决。

阅读 6k
1 个回答

我公司的做法是忽略证书验证,代码如下:

 SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
                // 信任所有
                public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                    return true;
                }
            }).build();
            HostnameVerifier hostnameVerifier = SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
            SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, hostnameVerifier);
            Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory> create().register("http", PlainConnectionSocketFactory.getSocketFactory())
                    .register("https", sslsf).build();
            cm = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
            cm.setMaxTotal(maxTotalConn);
            cm.setDefaultMaxPerRoute(maxPerRoute);
            httpClient = HttpClients.custom().setConnectionManager(cm).setSSLSocketFactory(sslsf).build();
推荐问题