精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

android httpClient 支持HTTPS的訪問方式

移動開發 Android
項目中Android https請求地址遇到了這個異常,javax.net.ssl.SSLPeerUnverifiedException: No peer certificate,是SSL協議中沒有終端認證。

項目中Android https請求地址遇到了這個異常(無終端認證):
javax.net.ssl.SSLPeerUnverifiedException: No peer certificate

是SSL協議中沒有終端認證。

沒有遇到過的問題,于是無奈的去找度娘。。。。。。。

看了不少大神的博客后得到的解決方案如下:

  1. /** 
  2.   * Post請求連接Https服務 
  3.   * @param serverURL  請求地址 
  4.   * @param jsonStr    請求報文 
  5.   * @return 
  6.   * @throws Exception 
  7.   */ 
  8.  public static synchronized String doHttpsPost(String serverURL, String jsonStr)throws Exception { 
  9.      // 參數 
  10.      HttpParams httpParameters = new BasicHttpParams(); 
  11.      // 設置連接超時 
  12.      HttpConnectionParams.setConnectionTimeout(httpParameters, 3000); 
  13.      // 設置socket超時 
  14.      HttpConnectionParams.setSoTimeout(httpParameters, 3000); 
  15.      // 獲取HttpClient對象 (認證) 
  16.      HttpClient hc = initHttpClient(httpParameters); 
  17.      HttpPost post = new HttpPost(serverURL); 
  18.      // 發送數據類型 
  19.      post.addHeader("Content-Type""application/json;charset=utf-8"); 
  20.      // 接受數據類型 
  21.      post.addHeader("Accept""application/json"); 
  22.      // 請求報文 
  23.      StringEntity entity = new StringEntity(jsonStr, "UTF-8"); 
  24.      post.setEntity(entity); 
  25.      post.setParams(httpParameters); 
  26.      HttpResponse response = null
  27.      try { 
  28.          response = hc.execute(post); 
  29.      } catch (UnknownHostException e) { 
  30.          throw new Exception("Unable to access " + e.getLocalizedMessage()); 
  31.      } catch (SocketException e) { 
  32.          e.printStackTrace(); 
  33.      } 
  34.      int sCode = response.getStatusLine().getStatusCode(); 
  35.      if (sCode == HttpStatus.SC_OK) { 
  36.          return EntityUtils.toString(response.getEntity()); 
  37.      } else 
  38.          throw new Exception("StatusCode is " + sCode); 
  39.  } 
  40.  
  41.  private static HttpClient client = null
  42.  /** 
  43.   * 初始化HttpClient對象 
  44.   * @param params 
  45.   * @return 
  46.   */ 
  47.  public static synchronized HttpClient initHttpClient(HttpParams params) { 
  48.      if(client == null){ 
  49.          try { 
  50.              KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); 
  51.              trustStore.load(nullnull); 
  52.                
  53.              SSLSocketFactory sf = new SSLSocketFactoryImp(trustStore); 
  54.              //允許所有主機的驗證 
  55.              sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 
  56.                
  57.              HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
  58.              HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); 
  59.              // 設置http和https支持 
  60.              SchemeRegistry registry = new SchemeRegistry(); 
  61.              registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 
  62.              registry.register(new Scheme("https", sf, 443)); 
  63.                
  64.              ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry); 
  65.                
  66.              return new DefaultHttpClient(ccm, params); 
  67.          } catch (Exception e) { 
  68.              e.printStackTrace(); 
  69.              return new DefaultHttpClient(params); 
  70.          } 
  71.      } 
  72.      return client; 
  73.  } 
  74.  
  75. public static class SSLSocketFactoryImp extends SSLSocketFactory { 
  76.      final SSLContext sslContext = SSLContext.getInstance("TLS"); 
  77.  
  78.      public SSLSocketFactoryImp(KeyStore truststore) 
  79.              throws NoSuchAlgorithmException, KeyManagementException, 
  80.              KeyStoreException, UnrecoverableKeyException { 
  81.          super(truststore); 
  82.  
  83.          TrustManager tm = new X509TrustManager() { 
  84.              public java.security.cert.X509Certificate[] getAcceptedIssuers() { 
  85.                  return null
  86.              } 
  87.  
  88.              @Override 
  89.              public void checkClientTrusted( 
  90.                      java.security.cert.X509Certificate[] chain, 
  91.                      String authType) 
  92.                      throws java.security.cert.CertificateException { 
  93.              } 
  94.  
  95.              @Override 
  96.              public void checkServerTrusted( 
  97.                      java.security.cert.X509Certificate[] chain, 
  98.                      String authType) 
  99.                      throws java.security.cert.CertificateException { 
  100.              } 
  101.          }; 
  102.          sslContext.init(nullnew TrustManager[] { tm }, null); 
  103.      } 
  104.  
  105.      @Override 
  106.      public Socket createSocket(Socket socket, String host, int port, 
  107.              boolean autoClose) throws IOException, UnknownHostException { 
  108.          return sslContext.getSocketFactory().createSocket(socket, host, 
  109.                  port, autoClose); 
  110.      } 
  111.  
  112.      @Override 
  113.      public Socket createSocket() throws IOException { 
  114.          return sslContext.getSocketFactory().createSocket(); 
  115.      } 
  116.  } 

run下,小手發抖的點到測試按鈕,深吸口氣,咦?沒反應。。。馬蛋的,工作線程忘記start(),唉,再次run下,終于的有點反應了,神奇的竟然沒有報之前的 javax.net.ssl.SSLPeerUnverifiedException: No peer certificate 的異常了。服務端的數據正常返回了。

分析問題:
HTTPS:超文本安全傳輸協議,和HTTP相比,多了一個SSL/TSL的認證過程,端口為443。

1.peer終端發送一個request,https服務端把支持的加密算法等以證書的形式返回一個身份信息(包含ca頒發機構和加密公鑰等)。

2.獲取證書之后,驗證證書合法性。

3.隨機產生一個密鑰,并以證書當中的公鑰加密。

4.request https服務端,把用公鑰加密過的密鑰傳送給https服務端。

5.https服務端用自己的密鑰解密,獲取隨機值。

6.之后雙方傳送數據都用此密鑰加密后通信。

HTTPS流程清楚后,問題也就明顯了,驗證證書時,無法驗證。

上面提供的解決方案就是添加默認信任全部證書。以此來通過接下來的通信。

但是,這樣問題是解決了。但是覺得還是不帶靠譜(信任全部證書有點危險)。繼續噼噼啪啪的網上搜索一番。又找到了一種解決方案,其過程大致這樣的:

1.瀏覽器訪問https地址,保存提示的證書到本地,放到android項目中的assets目錄。

2.導入證書,代碼如下。

3.把證書添加為信任。

  1. public static String requestHTTPSPage(Context context, String mUrl) { 
  2.         InputStream ins = null
  3.         String result = ""
  4.         try { 
  5.             ins = context.getAssets().open("my.key"); // 下載的證書放到項目中的assets目錄中 
  6.             CertificateFactory cerFactory = CertificateFactory.getInstance("X.509"); 
  7.             Certificate cer = cerFactory.generateCertificate(ins); 
  8.             KeyStore keyStore = KeyStore.getInstance("PKCS12""BC"); 
  9.             keyStore.load(nullnull); 
  10.             keyStore.setCertificateEntry("trust", cer); 
  11.   
  12.             SSLSocketFactory socketFactory = new SSLSocketFactory(keyStore); 
  13.             Scheme sch = new Scheme("https", socketFactory, 443); 
  14.             HttpClient mHttpClient = new DefaultHttpClient(); 
  15.             mHttpClient.getConnectionManager().getSchemeRegistry().register(sch); 
  16.   
  17.             BufferedReader reader = null
  18.             try { 
  19.                 HttpGet request = new HttpGet(); 
  20.                 request.setURI(new URI(mUrl)); 
  21.                 HttpResponse response = mHttpClient.execute(request); 
  22.                 if (response.getStatusLine().getStatusCode() != 200) { 
  23.                     request.abort(); 
  24.                     return result; 
  25.                 } 
  26.   
  27.                 reader = new BufferedReader(new InputStreamReader(response 
  28.                         .getEntity().getContent())); 
  29.                 StringBuffer buffer = new StringBuffer(); 
  30.                 String line = null
  31.                 while ((line = reader.readLine()) != null) { 
  32.                     buffer.append(line); 
  33.                 } 
  34.                 result = buffer.toString(); 
  35.             } catch (Exception e) { 
  36.                 e.printStackTrace(); 
  37.             } finally { 
  38.                 if (reader != null) { 
  39.                     reader.close(); 
  40.                 } 
  41.             } 
  42.         } catch (Exception e) { 
  43.             e.printStackTrace(); 
  44.         } finally { 
  45.             try { 
  46.                 if (ins != null
  47.                     ins.close(); 
  48.             } catch (IOException e) { 
  49.                 e.printStackTrace(); 
  50.             } 
  51.         } 
  52.         return result; 

本文鏈接:http://my.oschina.net/u/1251149/blog/299010

責任編輯:chenqingxiang 來源: oschina
相關推薦

2017-10-23 13:20:37

2025-08-19 09:58:38

2010-09-13 12:19:03

2019-04-24 11:41:32

云計算開發數據中心

2018-11-30 16:17:28

HTTPS

2017-06-07 11:37:47

2018-10-29 15:20:03

2021-09-15 08:09:43

前端技術編程

2010-05-31 17:56:27

2024-08-02 08:21:52

Spring項目方式

2010-08-13 08:57:20

Flex主題

2021-07-14 15:01:14

智能電網技術物聯網

2022-02-23 12:35:12

LibreOffic無障礙輔助套件

2017-05-24 09:43:42

2015-04-20 10:45:43

2010-04-16 16:39:25

Oracle細粒度

2013-03-26 13:38:12

Android per

2023-05-10 10:37:41

谷歌ChromeCookie

2011-07-25 17:50:42

PostgreSQLODBC

2010-03-16 11:07:19

ArrayiPhone應用交付
點贊
收藏

51CTO技術棧公眾號

日韩中文字幕在线视频播放| 亚洲成人综合视频| 成人一区二区电影| 日本一本高清视频| 欧美日中文字幕| 日韩免费视频一区二区| 免费黄色福利视频| 午夜国产福利在线| 成人黄色在线网站| 国产精品美腿一区在线看| 欧美偷拍第一页| 亚洲精品一级二级三级| 欧美喷潮久久久xxxxx| 久久男人资源站| 97电影在线观看| 波多野结衣视频一区| 国产日韩欧美一二三区| 日本少妇xxxx动漫| 久久精品久久久| 亚洲男人第一网站| av电影在线播放| 亚洲国产综合在线观看| 一本色道a无线码一区v| 国产成人一区二区三区别| 黄色在线播放| av电影天堂一区二区在线| 91免费国产视频| 一级久久久久久| 99热在线精品观看| 成年人精品视频| 国产又粗又硬视频| 奇米影视777在线欧美电影观看| 3d成人动漫网站| 黑人粗进入欧美aaaaa| 久热在线观看视频| 亚洲已满18点击进入久久| 亚洲一区二区在线看| 日韩国产福利| 91香蕉视频污| 国产日韩一区欧美| 亚洲av无码国产精品久久不卡| 蜜乳av一区二区三区| 91国在线精品国内播放| 久久精品视频国产| 久草视频中文在线| 亚洲网址在线观看| 日韩区在线观看| 特黄特黄一级片| 国产精品亚洲综合在线观看| 欧美日韩视频在线观看一区二区三区| 国产性xxxx18免费观看视频| 成人影院在线视频| 精品美女久久久久久免费| 韩日视频在线观看| 国产不卡123| 午夜在线电影亚洲一区| 亚洲精品无码国产| 91超碰国产在线| 欧美日韩一区二区在线| 日本成年人网址| 精品91久久| 一本一道久久a久久精品| 农村妇女精品一二区| 亚洲优女在线| 欧洲精品一区二区三区在线观看| 亚洲欧美激情网| 日本一区二区三区中文字幕| 欧美电影一区二区三区| 少妇欧美激情一区二区三区| 奇米一区二区| 亚洲福利影片在线| 丝袜美腿中文字幕| 国产51自产区| 欧美极品在线| 日韩一区国产二区欧美三区| 波多野结衣办公室双飞| 日韩成人午夜| 一区二区三区精品99久久| www成人啪啪18软件| 亚洲成人免费| 97av在线播放| 在线观看色网站| 国产精品1024| 精品日韩美女| √天堂资源地址在线官网| 亚洲色大成网站www久久九九| av 日韩 人妻 黑人 综合 无码| 超碰在线公开| 欧美日韩一区二区三区在线| 丰满饥渴老女人hd| 图片婷婷一区| 久久精品国产96久久久香蕉| 久久久久久久99| 日本在线播放一区二区三区| 99c视频在线| 你懂的在线看| 亚洲精品福利视频网站| 国产女女做受ⅹxx高潮| 伊人久久大香| 亚洲娇小xxxx欧美娇小| 影音先锋男人资源在线观看| 影音先锋久久精品| 国产精品中文久久久久久久| 国产综合视频在线| 中文字幕成人网| 成人网站免费观看入口| 日韩美香港a一级毛片| 亚洲国产精品久久久久| 清纯唯美一区二区三区| av电影在线观看一区二区三区| 亚洲精品亚洲人成人网| 欧美日韩一区二区在线免费观看 | 久久福利综合| 国产成人av一区| 91视频国产高清| 黄色大片在线看| 亚洲国产精品综合小说图片区| 欧美日韩怡红院| 久久影视三级福利片| 久久天天躁狠狠躁夜夜躁| 99精品人妻国产毛片| 国产精品18久久久| 日韩一区国产在线观看| 国产精品论坛| 欧美成人综合网站| www欧美com| 蜜臀99久久精品久久久久久软件| 九色91在线视频| 色呦呦在线资源| 91精品久久久久久久99蜜桃| 国产一二三四区在线| 夜夜夜久久久| 国产区日韩欧美| 色图在线观看| 正在播放亚洲一区| 中文字幕有码在线播放| 亚洲综合国产| 精品一区久久| 欧美激情护士| 国产视频精品自拍| 国产综合精品视频| 99久久婷婷国产综合精品电影| 男女啪啪免费观看| 日韩综合一区二区三区| 欧美成人黄色小视频| 国产有码在线观看| 国产精品电影一区二区三区| 亚洲 中文字幕 日韩 无码| 香蕉久久精品| 国产大片精品免费永久看nba| 免费在线超碰| 在线观看日产精品| 一区二区三区四区免费| 日本大胆欧美人术艺术动态| 日韩av电影免费在线| 成人免费福利| 中文字幕亚洲欧美日韩2019| 亚洲天堂aaa| 亚洲日本va在线观看| 欧美高清激情视频| 成人黄色片在线观看| 国产日韩欧美电影| 日韩av在线中文| 久久精品亚洲人成影院| 亚洲自拍在线观看| 国产一线二线在线观看| 亚洲精品www| 午夜影院免费在线观看| 欧美韩国日本一区| 九九九久久久久久久| 欧美另类视频| 精品国产福利| 日本成人福利| 免费不卡在线观看av| 成人av一区二区三区在线观看| 亚洲成av人影院在线观看网| 国产成人av一区二区三区不卡| 日韩福利电影在线| 女女同性女同一区二区三区按摩| 哺乳一区二区三区中文视频| 538国产精品一区二区免费视频| 大片免费播放在线视频| 在线播放中文一区| 免费看日韩毛片| 中文字幕欧美激情| 妖精视频在线观看| 香蕉成人久久| 亚洲综合视频一区| 国产精品毛片视频| 国产精品视频网| 不卡一本毛片| 色婷婷久久一区二区| 成人久久久精品国产乱码一区二区| 欧美日韩亚洲高清| 免费三级在线观看| 99re这里都是精品| 999这里有精品| 国产免费一区二区三区免费视频| 久久夜色精品国产欧美乱极品| www.久久久精品| 亚洲精品看片| 中文字幕一区二区三区四区五区六区| 国内精品国产成人国产三级粉色 | 国产精品男女视频| 1区2区3区精品视频| 精品人妻互换一区二区三区| 国产69精品久久久久777| 久草福利视频在线| 亚洲美女毛片| 久久久久亚洲av无码专区喷水| 中文字幕精品影院| 国产精品theporn88| 日日夜夜综合| 欧美中文在线观看国产| 久久一卡二卡| 久久综合九色九九| 9191在线| 亚洲天堂免费在线| 天堂av一区二区三区| 成人免费视频视频在线观看免费| 国产精品户外野外| av第一福利在线导航| 久久天天躁夜夜躁狠狠躁2022| 极品白浆推特女神在线观看| 欧美大胆一级视频| 99精品久久久久久中文字幕 | 97免费观看视频| 91官网在线观看| 亚洲免费黄色网址| 欧美日韩激情视频| 日本在线观看视频网站| 亚洲精品水蜜桃| 日本黄色片免费观看| 1024成人网| 伊人久久久久久久久久久久久久| 久久精品一区二区三区不卡| 97人妻精品一区二区三区免| 波多野结衣在线aⅴ中文字幕不卡| 丰满少妇中文字幕| 国产成人精品免费网站| 肉色超薄丝袜脚交| 国产精一区二区三区| 91丝袜超薄交口足| 国产精品99久久久久久久vr| 亚洲图片 自拍偷拍| 国产精品亚洲综合一区在线观看| 天天av天天操| 国产成人啪免费观看软件| 色婷婷狠狠18禁久久| 国产不卡视频在线播放| 91亚洲一线产区二线产区| 粉嫩绯色av一区二区在线观看| 美女流白浆视频| 成人免费观看视频| 精品一卡二卡三卡四卡日本乱码 | 亚洲欧美卡通动漫| 国产精品卡一卡二卡三| 天堂av免费在线| 亚洲美女视频在线| 久久免费视频精品| 午夜激情一区二区三区| 美日韩一二三区| 欧美在线一二三四区| 一道本无吗一区| 欧美一级理论片| 日韩在线视频免费| 亚洲乱码一区av黑人高潮| 岛国在线视频免费看| 中文字幕亚洲图片| 日本在线观看大片免费视频| 午夜欧美不卡精品aaaaa| 中文字幕影音在线| 国产精品99久久久久久久久| 婷婷精品久久久久久久久久不卡| **亚洲第一综合导航网站| 久久a级毛片毛片免费观看| 日本成人黄色免费看| 亚洲综合激情在线| 99精品在线免费视频| 日本网站在线观看一区二区三区| 看看黄色一级片| 成人黄色av电影| av永久免费观看| 亚洲一区二区三区四区的| 黑人精品无码一区二区三区AV| 欧美亚洲禁片免费| 亚洲精品久久久久久久久久久久久久| 亚洲激情视频在线| 欧美jizzhd69巨大| 国模精品视频一区二区三区| 亚洲成人一区在线观看| 99porn视频在线| 国产一区99| 免费网站永久免费观看| 日韩电影在线免费观看| 欧美xxxx日本和非洲| 国产亚洲欧美日韩俺去了| 欧美被狂躁喷白浆精品| 欧日韩精品视频| 男人天堂网在线视频| 日韩在线视频中文字幕| 亚洲日本天堂| 波多野结衣精品久久| 久久免费av| 精品人妻一区二区三区四区在线| 国产一区二区三区免费播放| 国产交换配乱淫视频免费| 一区二区三区资源| 一区二区三区 欧美| 欧美一区二区三区婷婷| 5566av亚洲| 日韩系列欧美系列| 情侣黄网站免费看| 成人国产亚洲欧美成人综合网| 国产又黄又粗又猛又爽的| 欧美日韩中文字幕日韩欧美| www.麻豆av| www亚洲欧美| 视频精品导航| 日韩av一区二区三区美女毛片| 亚洲黄色视屏| 久久久国产精品久久久| 国产精品久久久爽爽爽麻豆色哟哟 | 韩国精品久久久999| 国产在线一区不卡| 一区二区三区免费看| 石原莉奈一区二区三区在线观看| 国产69视频在线观看| 亚洲一区二区精品久久av| 国产精品福利电影| 色av中文字幕一区| 日韩毛片一区| 欧美一区少妇| 丝袜亚洲另类欧美综合| 国产又爽又黄无码无遮挡在线观看| 亚洲成人资源网| 日本wwwxxxx| 国产69精品久久久久99| 国产亚洲成av人片在线观黄桃| 国内少妇毛片视频| 成人久久18免费网站麻豆| 欧美毛片在线观看| 亚洲成年人在线| 福利在线免费视频| 久久久久久欧美精品色一二三四| 在线播放精品| 少妇毛片一区二区三区| 日韩欧美在线第一页| 毛片在线免费| 国产精品美腿一区在线看| 欧美激情另类| 中文字幕资源在线观看| 亚洲女爱视频在线| 亚洲国产精品18久久久久久| 欧美夫妻性生活视频| 超碰97久久国产精品牛牛| 免费看又黄又无码的网站| www国产亚洲精品久久麻豆| 中文字幕一区二区三区四区欧美| 欧美日韩亚洲一区在线观看| 精品视频免费在线播放| 久久久不卡影院| 亚洲熟妇无码久久精品| 不卡av电影在线观看| 99久久人爽人人添人人澡| www在线观看免费| 国产亚洲精品超碰| 亚洲视频久久久| 欧美激情精品久久久久久久变态| 红杏aⅴ成人免费视频| 日韩 欧美 高清| 成人欧美一区二区三区1314| 免费av网站观看| 国产成人一区二| 一区二区国产在线| 中文字幕天堂av| 91成人在线精品| 老司机精品视频在线观看6| 成人免费看片网站| 日韩在线一区二区| 麻豆亚洲av成人无码久久精品| 亚洲激情第一页| av在线成人| 青青草原av在线播放| 亚洲丝袜精品丝袜在线| 日本黄色大片视频| 国产精品男人的天堂| 好吊一区二区三区| 免费一级黄色录像| 日韩精品专区在线影院重磅| 伊人久久视频| 成年丰满熟妇午夜免费视频| 26uuu亚洲综合色欧美| 国产又粗又长视频| 欧美在线视频一区二区| 亚洲精品小说| 六月婷婷七月丁香| 精品成a人在线观看| 国产福利91精品一区二区| 国产精品成人久久电影|