tinguo002

           

          避免HttpClient的”SSLPeerUnverifiedException: peer not authenticated”異常

          /**解決辦法**
          * 1添加一個方法
          * 2調用這個方法生成一個新的httpClient對象
          **/



          import java.security.SecureRandom;
          import java.security.cert.CertificateException;
          import java.security.cert.X509Certificate;

          import javax.net.ssl.SSLContext;
          import javax.net.ssl.TrustManager;
          import javax.net.ssl.X509TrustManager;

          import org.apache.http.client.HttpClient;
          import org.apache.http.conn.ClientConnectionManager;
          import org.apache.http.conn.scheme.Scheme;
          import org.apache.http.conn.scheme.SchemeRegistry;
          import org.apache.http.conn.ssl.SSLSocketFactory;
          import org.apache.http.impl.client.DefaultHttpClient;

          public class HttpUtils
          {
              
          private HttpClient httpClient;
              
          public HttpUtils()
              
          {
                  httpClient 
          = null;
              }


              
          public void openConnection()
              
          {
                  httpClient 
          = new DefaultHttpClient();
                
            httpClient = getSecuredHttpClient(httpClient
              });
                  


              
              
          /**
               * 避免HttpClient的”SSLPeerUnverifiedException: peer not authenticated”異常
               * 不用導入SSL證書
               * 
               * 
          @author shipengzhi(shipengzhi@sogou-inc.com)
               * 
               
          */

              
          private static DefaultHttpClient getSecuredHttpClient(HttpClient httpClient) {
                  
          final X509Certificate[] _AcceptedIssuers = new X509Certificate[] {};
                  
          try {
                      SSLContext ctx 
          = SSLContext.getInstance("TLS");
                      X509TrustManager tm 
          = new X509TrustManager() {
                          @Override
                          
          public X509Certificate[] getAcceptedIssuers() {
                              
          return _AcceptedIssuers;
                          }


                          @Override
                          
          public void checkServerTrusted(X509Certificate[] chain,
                                  String authType) 
          throws CertificateException {
                          }


                          @Override
                          
          public void checkClientTrusted(X509Certificate[] chain,
                                  String authType) 
          throws CertificateException {
                          }

                      }
          ;
                      ctx.init(
          nullnew TrustManager[] { tm }new SecureRandom());
                      SSLSocketFactory ssf 
          = new SSLSocketFactory(ctx,
                              SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
                      ClientConnectionManager ccm 
          = httpClient.getConnectionManager();
                      SchemeRegistry sr 
          = ccm.getSchemeRegistry();
                      sr.register(
          new Scheme("https"443, ssf));
                      
          return new DefaultHttpClient(ccm, httpClient.getParams());
                  }
           catch (Exception e) {
                      System.out.println(
          "=====:=====");
                      e.printStackTrace();
                  }

                  
          return null;
              }

          }



          歡迎大家訪問我的個人網站 萌萌的IT人

          posted on 2014-04-09 17:34 一堣而安 閱讀(992) 評論(0)  編輯  收藏 所屬分類: java

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 浮梁县| 延津县| 治多县| 台东市| 栾城县| 辉南县| 察雅县| 外汇| 新田县| 尉犁县| 乌苏市| 通州区| 察雅县| 永寿县| 兴宁市| 电白县| 德化县| 津南区| 九龙城区| 永寿县| 义马市| 榆树市| 金堂县| 中阳县| 石屏县| 沛县| 江安县| 拜泉县| 武隆县| 深水埗区| 赣州市| 元阳县| 台中市| 高尔夫| 淮阳县| 浠水县| 青神县| 米易县| 合水县| 平安县| 鹤庆县|