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 一堣而安 閱讀(999) 評論(0)  編輯  收藏 所屬分類: java

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 黄冈市| 巴南区| 奇台县| 西盟| 育儿| 鸡泽县| 毕节市| 宝丰县| 宁波市| 车险| 南京市| 泊头市| 梅州市| 陆河县| 河东区| 盐池县| 铜鼓县| 茶陵县| 海伦市| 博罗县| 来宾市| 娄烦县| 嘉善县| 凤冈县| 梅州市| 垫江县| 景泰县| 寿宁县| 莱芜市| 乌兰察布市| 沙田区| 合作市| 沅陵县| 浏阳市| 安平县| 旺苍县| 吉安市| 阿拉善盟| 屏东县| 长沙县| 永清县|