javax.net.ssl.SSLException:hostname in certificate didn't match
生活随笔
收集整理的這篇文章主要介紹了
javax.net.ssl.SSLException:hostname in certificate didn't match
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
終于建了一個自己個人小站:https://huangtianyu.gitee.io,以后優先更新小站博客,歡迎進站,O(∩_∩)O~~
現在網站用https的服務器越來越多了,在編寫程序的時候往往會遇到證書驗證錯誤。也就是SSLException錯誤。下面給出解決方案:
private static DefaultHttpClient getHttpClient() {try {// 禁止https證書驗證KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());trustStore.load(null, null);SSLSocketFactory sf = new SSLSocketFactoryEx(trustStore);sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);//運行所有的hostname驗證HttpParams params = new BasicHttpParams();HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);// 禁用Cookie2請求頭HttpClientParams.setCookiePolicy(params, CookiePolicy.RFC_2109);HttpClientParams.setCookiePolicy(params, CookiePolicy.BROWSER_COMPATIBILITY);HttpClientParams.setCookiePolicy(params, CookiePolicy.NETSCAPE);SchemeRegistry registry = new SchemeRegistry();registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));registry.register(new Scheme("https", sf, 443));ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);HttpConnectionParams.setConnectionTimeout(params, 3000);HttpConnectionParams.setSoTimeout(params, 5000);return new DefaultHttpClient(ccm, params);} catch (Exception e) {HttpParams httpParams = new BasicHttpParams();HttpConnectionParams.setConnectionTimeout(httpParams, 3000);HttpConnectionParams.setSoTimeout(httpParams, 5000);return new DefaultHttpClient(httpParams);}} 通過上述方法獲取得到的DefaultHttpClient ,通過該HttpClient再次進行網絡請求就能繞過證書驗證。該方法需要導入Apache的網絡包:org.apache.http.legacy.jar總結
以上是生活随笔為你收集整理的javax.net.ssl.SSLException:hostname in certificate didn't match的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动咪咕PHP代理源码,咪咕视频解析源码
- 下一篇: linux的几个小工具(日历和计算器)