Android中包含了Apache Jakarta Common 下的子项目 HttpClient 类包的一个子集。因此,在大多数情况下可以按照JVM的方式使用HttpClient,但是在有些情况下,由于Android SDK中未包含某些类,处理的方式就有差别。比如,访问https时安全证书的处理。

假如我们的需求是自动接受所有安全证书。思路跟以前一样,扩展一个SSLSocketFactory类,并将TrustManager里的方法全部重写成空。

为了方便使用,我直接在Android的org.apache.http.conn.ssl.SSLSocketFactory源码上扩展。

主要修改了其默认构造方法,如下:

     private CustomSSLSocketFactory() throws NoSuchAlgorithmException, KeyManagementException {        super();//        this.sslcontext = null;//        this.socketfactory = HttpsURLConnection.getDefaultSSLSocketFactory();//        this.nameResolver = null;        this.sslcontext = SSLContext.getInstance(TLS);        this.sslcontext.init(null, new TrustManager[]{                new X509TrustManager() {                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {                        return null;                    }                    public void checkClientTrusted(                        java.security.cert.X509Certificate[] certs, String authType) {                    }                    public void checkServerTrusted(                        java.security.cert.X509Certificate[] certs, String authType) {                    }                }            }, new SecureRandom());        this.socketfactory = this.sslcontext.getSocketFactory();        this.nameResolver = null;    }

定义好SSLSocketFactory之后,再使用它来配置HttpClient并访问Https就和以前一样了。

转载请注明

更多相关文章

  1. android 常用控件的使用 TextView EditTextView
  2. Android(安卓)Adapter使用总结
  3. android RecyclerView布局真的只是那么简单!
  4. 从Android项目学习Kotlin(一)
  5. Android开发工具使用之adb
  6. Android使用http协议与服务器通信
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. Android(安卓)系统启动流程简析
  2. Android的init过程详解(一)
  3. 第十二章:Android数据存储(下)
  4. 如果没有 Android,世界会怎样?
  5. Android(安卓)设备管理API概览(Device Adm
  6. Android(安卓)Handler机制
  7. Android在未来的发展
  8. 使用android中drawline函数无法绘制水平
  9. Android内核开发:理解和掌握repo工具(含被
  10. Android(安卓)日历开发教程[四]