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
先增加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
相关文章推荐
- 克隆或复制VMware虚拟机时的网络设置
- HTTP常用对照表
- 网络仿真工具TOTEM之——mpls构建LSP
- Android API 23中废弃了HttpClient的解决办法
- python中的list http://www.jb51.net/article/47978.htm
- 由 TCP 报文格式谈 TCP — 源端口号、目的端口号、报文段序号(一)
- hadoop正式学习之redis---网络数据爬虫
- The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- Swift:网络库Alamofire
- TCP/IP详解 卷一 --------SNMP
- http_load使用
- 通过vsphere client创建虚拟机并且安装windows 2008 64位操作系统及网络配置
- http报文格式和post, get方式区别与误区(很不错哦)
- 狙击网络高延时点
- WIN10使用VS2008通过网络在WINCE6.0模拟器调试应用
- HttpClient使用详解 (了解)
- 神经网络2
- JAVA中HTTP请求参数组织小工具
- 微型Http服务器Tiny Http Server
- 在阻塞式的tcp连接中使用recv接收数据未达到指定长度返回问题