您的位置:首页 > 理论基础 > 计算机网络

Android Volley增加Https支持,允许SSL

2016-05-05 21:10 465 查看
Volley默认是不支持Https请求的。如果Https服务器是单向认证,则增加以下允许SSL就可以。

先增加SsX509TrustManager类,代码如下

[java] view
plain copy

package com.lakala.net.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;

/**

* Volley允许HTTPS

*

* Created by yuyh on 15/12/28.

*/

public class SsX509TrustManager 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;

}

/**

* 允许所有的SSL请求,添加在new StringRequest()之前

*/

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 SsX509TrustManager()};

}

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());

}

}

然后再new StringRequest()之前加上下面这句代码就可以了~~

[java] view
plain copy

// 允许SSL

SsX509TrustManager.allowAllSSL();

原文地址:http://blog.csdn.net/yyh352091626/article/details/50497027
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: