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)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 科尔| 彰化县| 和龙市| 赞皇县| 永德县| 南澳县| 旬阳县| 东阿县| 东源县| 铜川市| 商都县| 鄂尔多斯市| 巨鹿县| 仪征市| 焦作市| 浦北县| 莱阳市| 枞阳县| 彰化市| 从江县| 洛宁县| 安国市| 兴宁市| 全椒县| 敦煌市| 滨州市| 台中县| 肥西县| 万州区| 博兴县| 雅江县| 徐水县| 休宁县| 广州市| 扎囊县| 大化| 新闻| 客服| 正镶白旗| 杨浦区| 宁安市|