博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 实现 HttpClient 请求Https
阅读量:4338 次
发布时间:2019-06-07

本文共 2326 字,大约阅读时间需要 7 分钟。

 

如题,默认下,HttpClient是不能请求Https的,需要自己获取

[java]
  1. private static final int SET_CONNECTION_TIMEOUT = 5 * 1000;  
  2.     private static final int SET_SOCKET_TIMEOUT = 20 * 1000;  
  3.       
  4.     public static HttpClient getNewHttpClient() {  
  5.         try {  
  6.             KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());  
  7.             trustStore.load(null, null);  
  8.   
  9.             SSLSocketFactory sf = new MySSLSocketFactory(trustStore);  
  10.             sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);  
  11.   
  12.             HttpParams params = new BasicHttpParams();  
  13.   
  14.             HttpConnectionParams.setConnectionTimeout(params, 10000);  
  15.             HttpConnectionParams.setSoTimeout(params, 10000);  
  16.   
  17.             HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);  
  18.             HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);  
  19.   
  20.             SchemeRegistry registry = new SchemeRegistry();  
  21.             registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));  
  22.             registry.register(new Scheme("https", sf, 443));  
  23.   
  24.             ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);  
  25.   
  26.             HttpConnectionParams.setConnectionTimeout(params, SET_CONNECTION_TIMEOUT);  
  27.             HttpConnectionParams.setSoTimeout(params, SET_SOCKET_TIMEOUT);  
  28.             HttpClient client = new DefaultHttpClient(ccm, params);  
  29.   
  30.             return client;  
  31.         } catch (Exception e) {  
  32.             return new DefaultHttpClient();  
  33.         }  
  34.     }  

下面是MySSLSocketFactory类

[java]
    1. private static class MySSLSocketFactory extends SSLSocketFactory {  
    2.         SSLContext sslContext = SSLContext.getInstance("TLS");  
    3.   
    4.         public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException,  
    5.                 KeyManagementException, KeyStoreException, UnrecoverableKeyException {  
    6.             super(truststore);  
    7.   
    8.             TrustManager tm = new X509TrustManager() {  
    9.                 public void checkClientTrusted(X509Certificate[] chain, String authType)  
    10.                         throws CertificateException {  
    11.                 }  
    12.   
    13.                 public void checkServerTrusted(X509Certificate[] chain, String authType)  
    14.                         throws CertificateException {  
    15.                 }  
    16.   
    17.                 public X509Certificate[] getAcceptedIssuers() {  
    18.                     return null;  
    19.                 }  
    20.             };  
    21.   
    22.             sslContext.init(null, new TrustManager[] { tm }, null);  
    23.         }  
    24.   
    25.         @Override  
    26.         public Socket createSocket(Socket socket, String host, int port, boolean autoClose)  
    27.                 throws IOException, UnknownHostException {  
    28.             return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);  
    29.         }  
    30.   
    31.         @Override  
    32.         public Socket createSocket() throws IOException {  
    33.             return sslContext.getSocketFactory().createSocket();  
    34.         }  
    35.     } 

转载于:https://www.cnblogs.com/xgjblog/p/3834049.html

你可能感兴趣的文章
静态链接与动态链接的区别
查看>>
Android 关于悬浮窗权限的问题
查看>>
如何使用mysql
查看>>
linux下wc命令详解
查看>>
敏捷开发中软件测试团队的职责和产出是什么?
查看>>
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>
python的字符串内建函数
查看>>
Spring - DI
查看>>
微软自己的官网介绍 SSL 参数相关
查看>>
Composite UI Application Block (CAB) 概念和术语
查看>>
ajax跨域,携带cookie
查看>>
阶段3 2.Spring_01.Spring框架简介_03.spring概述
查看>>
阶段3 2.Spring_02.程序间耦合_1 编写jdbc的工程代码用于分析程序的耦合
查看>>
阶段3 2.Spring_01.Spring框架简介_04.spring发展历程
查看>>
阶段3 2.Spring_02.程序间耦合_3 程序的耦合和解耦的思路分析1
查看>>
阶段3 2.Spring_02.程序间耦合_5 编写工厂类和配置文件
查看>>
阶段3 2.Spring_01.Spring框架简介_05.spring的优势
查看>>
阶段3 2.Spring_02.程序间耦合_7 分析工厂模式中的问题并改造
查看>>
阶段3 2.Spring_02.程序间耦合_4 曾经代码中的问题分析
查看>>
阶段3 2.Spring_03.Spring的 IOC 和 DI_2 spring中的Ioc前期准备
查看>>