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

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 长白| 定南县| 长宁区| 长春市| 渭源县| 桦甸市| 甘洛县| 福建省| 容城县| 博客| 汪清县| 东方市| 望江县| 长宁县| 贡嘎县| 阿克| 调兵山市| 丽江市| 永福县| 沙田区| 澳门| 彝良县| 邢台县| 西吉县| 沙雅县| 嘉鱼县| 香格里拉县| 阿拉善左旗| 汽车| 客服| 大渡口区| 南昌县| 白水县| 五峰| 阳高县| 林西县| 大安市| 墨脱县| 铜川市| 且末县| 三江|