java调用https接口报错
2016-10-31 17:03
218 查看
调用第三方https接口,在本地测试没问题,将项目提交到测试环境怎么都掉不通,报如下错误:
查了下大概就是说没证书,本地是在chrome浏览器上测试的,测试过程中一直没提示说要安装什么证书,也看了下本地的证书,……东西太多,一下子找不出到底本地在不知道的情况下安装了哪个证书,网上查了很多资料,有说在服务器上安装证书的,有说改代码的,最后解决的办法是创建CloseableHttpClient用了以下代码,https接口成功调用:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) ~[na:1.7.0_71] at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884) ~[na:1.7.0_71] at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) ~[na:1.7.0_71] at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270) ~[na:1.7.0_71] at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1439) ~[na:1.7.0_71] at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209) ~[na:1.7.0_71] at sun.security.ssl.Handshaker.processLoop(Handshaker.java:878) ~[na:1.7.0_71] at sun.security.ssl.Handshaker.process_record(Handshaker.java:814) ~[na:1.7.0_71] at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016) ~[na:1.7.0_71] at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) ~[na:1.7.0_71] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) ~[na:1.7.0_71] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) ~[na:1.7.0_71]
查了下大概就是说没证书,本地是在chrome浏览器上测试的,测试过程中一直没提示说要安装什么证书,也看了下本地的证书,……东西太多,一下子找不出到底本地在不知道的情况下安装了哪个证书,网上查了很多资料,有说在服务器上安装证书的,有说改代码的,最后解决的办法是创建CloseableHttpClient用了以下代码,https接口成功调用:
public static CloseableHttpClient createSSLClientDefault(){ try { SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { //信任所有 public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { return true; } }).build(); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext); return HttpClients.custom().setSSLSocketFactory(sslsf).build(); } catch (KeyManagementException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (KeyStoreException e) { e.printStackTrace(); } return HttpClients.createDefault(); }
相关文章推荐
- HproseUtils HPROSE java 调用别人接口的工具类 解决调用https接口问题
- Java 调用Restful API接口的几种方式--HTTPS
- java如何调用https地址类型的webservice接口
- JAVA利用HttpClient进行HTTPS接口调用
- JAVA利用HttpClient进行HTTPS接口调用
- 基于java调用https接口
- JAVA利用HttpClient进行HTTPS接口调用
- java利用HttpClient进行https接口调用
- Java 调用Restful API接口的几种方式(HTTPS)
- JAVA利用HttpClient进行HTTPS接口调用的方法
- Java调用C#写的web服务接口(含https调用)
- 基于java调用https接口
- JAVA利用HttpClient进行HTTPS接口调用
- JAVA如何调用VOS2009接口
- Java调用本地接口jni与C通信----------------JNI
- 怎么根据linux c/c++ 开发的d-bus服务生成java 的调用接口文件
- 《Java 本地接口规范》- 调用 API
- DB2数据库、触发器、存储过程、JAVA数据库链接(JDBC)、调用层接口(CLI)
- Java如何通过URL调用远程接口并读取返回信息?
- 关于vs2010下编译dll动态库,JNA接口在java中调用的问题