Volley 添加https支持

Volley支持HTTPS,但是框架中默认没有加上去,可以修改一小部分源码来实现;

一是重写Volley.java newRequestQueueInDisk方法 调用第三个构造。又因为这三个构造最后调用的都是参数最多的那个所以也可以在第三个构造中直接默认生成SSLSocketFactory实例。

二是在toolbox中添加HTTPSTrustManager类(代码网上找的),并对HurlStack的createConnetcion方法进行小小的修改

package com.android.volley.toolbox;

import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class HTTPSTrustManager implements X509TrustManager {

    private static TrustManager[] trustManagers;
    private static final X509Certificate[] _AcceptedIssuers = new X509Certificate[] {};

    @Override
    public void checkClientTrusted(
            java.security.cert.X509Certificate[] x509Certificates, String s)
            throws java.security.cert.CertificateException {
        // To change body of implemented methods use File | Settings | File
        // Templates.
    }

    @Override
    public void checkServerTrusted(
            java.security.cert.X509Certificate[] x509Certificates, String s)
            throws java.security.cert.CertificateException {
        // To change body of implemented methods use File | Settings | File
        // Templates.
    }

    public boolean isClientTrusted(X509Certificate[] chain) {
        return true;
    }

    public boolean isServerTrusted(X509Certificate[] chain) {
        return true;
    }

    @Override
    public X509Certificate[] getAcceptedIssuers() {
        return _AcceptedIssuers;
    }

    public static void allowAllSSL() {
        HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {

            @Override
            public boolean verify(String arg0, SSLSession arg1) {
                // TODO Auto-generated method stub
                return true;
            }

        });

        SSLContext context = null;
        if (trustManagers == null) {
            trustManagers = new TrustManager[] { new HTTPSTrustManager() };
        }

        try {
            context = SSLContext.getInstance("TLS");
            context.init(null, trustManagers, new SecureRandom());
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (KeyManagementException e) {
            e.printStackTrace();
        }

        HttpsURLConnection.setDefaultSSLSocketFactory(context
                .getSocketFactory());
    }

}
protected HttpURLConnection createConnection(URL url) throws IOException {
        if("https".equals(url.getProtocol().toLowerCase())){
            HTTPSTrustManager.allowAllowSSL();
        }
        return (HttpURLConnection) url.openConnection();
}

三是每次VolleyQueue之前调一次HTTPSTrustManager.allowAllowSSL();

HTTPSTrustManager.allowAllowSSL();
mVolleyQuene.add(newRequest());

默认用第二种。

时间: 2024-08-30 10:48:45

Volley 添加https支持的相关文章

nginx 添加https支持

自行颁发不受浏览器信任的SSL证书为晒晒IQ网颁发证书.ssh登陆到服务器上,终端输入以下命令,使用openssl生成RSA密钥及证书. # 生成一个RSA密钥 $ openssl genrsa -des3 -out ssl.key 1024 # 生成一个证书请求 $ openssl req -new -key ssl.key -out ssl.csr # 自己签发证书 $ openssl x509 -req -days 365 -in ssl.csr -signkey ssl.key -out

nginx添加模块与https支持

实例1:为已安装nginx动态添加模块 以安装rtmp媒流模块为例: 1)下载第三方模块到 [[email protected] nginx-1.8.1]# git clone https://github.com/arut/nginx-rtmp-module.git 2)查看nginx编译安装时安装的模块 [[email protected] nginx-1.8.1]# nginx -V nginx version: nginx/1.8.1 built by gcc 4.4.7 2012031

XUtils BitmapUtils 改造以添加drawable支持

=== XUtilsBitmapUtils 改造以添加drawable支持 === # XUtils 简介 XUtils 是一套少有的早期国产安卓框架, 其源于AFinal, 目录结构也与之相似, 但是代码却进行了大量的重构, 是XUtils更加现代, 解决了AFinal 的OOM等问题. 目前 XUtils 已经支持 API 8(android 2.2) 至 API 21(android 5.0.x). XUtils 主要内置了DbUtils 模块, ViewUtils 模块, HttpUti

为UiAutomatorViewer添加xpath支持

UiAutomatorViewer是Android SDK自带的测试工具,用来查看手机或模拟器上的界面元素,小巧,简单,开箱即用,十分方便.美中不足之处在于,它不能获取界面元素的xpath. 写自动化测试脚本时,xpath是一种非常方便的定位方式.Appium等一些成熟的工具框架可以获取到界面元素xpath,但使用起来稍有点重量级.那么是否也可以给UiAutomatorViewer添加xpath支持呢? 答案是肯定的. 首先下载UiAutomatorView源代码,我用的地址是https://a

【第六篇】Volley之https相关

Volley之https信任所有证书实现: public class HttpsTrustManager implements X509TrustManager { private static TrustManager[] trustManagers; private static final X509Certificate[] _AcceptedIssuers = new X509Certificate[]{}; @Override public void checkClientTruste

为UIAlertView添加block支持

系统自带的UIAlertView只能支持delegate方式. 如果你只有一个UIAlertView这种方式可能无关紧要. 但如果你有二个或多个UIAlertView, 你需要在委托方法中进行判断是哪个UIAlertView实例的产生的委托, 接着又要判断是响应哪个button. 如果你曾经这样做过, 想想这是多杂的代码. Objective-C是支持块代码的, 如果对UIAlertView添加块支持, 那岂不是一个美事. 这里推荐一个开源的实现: https://github.com/jiv

Ubuntu下安装VirtualBox并为其添加USB支持

1.下载VirtualBox软件包和USB支持包 下载网址均为为:https://www.virtualbox.org/wiki/Downloads VirtualBox软件包下载项: VirtualBox 4.3.10 for Linux hosts USB支持包下载项: VirtualBox 4.3.10 Oracle VM VirtualBox Extension Pack All supported platforms 2.下载完成后,进行安装 3.添加当前用户到组 sudo gedit

为Vim 添加vimgdb支持

为Vim 添加vimgdb支持 1.    下载最新的vim74的源码包 wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2 2.下载vimgdb-for-vim7.4源码 wget https://github.com/larrupingpig/vimgdb-for-vim7.4/archive/master.zip -O vimgdb-for-vim74.zip 3.解压所有文件,并应用补丁文件 tar xjvf vim-7.4.tar.b

Apache服务的HTTPS支持配置

附加题: u 案例需求 1. 基于编译安装的httpd服务器,添加HTTPS协议支持以提高安全性. 2. 当客户机通过HTTP方式访问站点时,能够自动跳转为HTTPS方式访问. u 知识提示 HTTPS指的是Hyper Text Transfer Protocol Secure,安全超文本传输协议.HTTPS实际上使用了SSL(安全套接字层)作为HTTP应用层的子层,针对明文传输的HTTP通信流进行加密,从而避免敏感信息被捕获或窃听,因此HTTPS协议在网上银行.安全邮箱等Web访问场合比较常见