Android Volley增加Https支持,允许SSL
2016-06-19 23:41
609 查看
转自:http://m.blog.csdn.net/article/details?id=50497027,在此记录
Volley默认是不支持Https请求的。如果Https服务器是单向认证,则增加以下允许SSL就可以。
先增加SsX509TrustManager类,代码如下
SsX509TrustManager.allowAllSSL();
Volley默认是不支持Https请求的。如果Https服务器是单向认证,则增加以下允许SSL就可以。
先增加SsX509TrustManager类,代码如下
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()之前加上下面这句代码就可以了
SsX509TrustManager.allowAllSSL();
相关文章推荐
- TCP通信的三次握手和四次撒手的详细流程
- HTTP缓存缓存机制
- TCP的SO_LINGER 选项
- 让chrome谷歌浏览器自动访问https链接
- 基于C#的简单http服务器,用于多台工控机数据的监控
- Linux网络配置 DNS配置信息丢失 可能原因分析
- HTTP错误405-Method Not Allowed
- 玩营销就要做潜伏,原来奇瑞是这么干的
- 开源一个网络库ARHttpRequest,iOS适配NSURLSession/ASIHTTPRequest等,Android适配HttpURLConnection等
- [Mechine Learning & Algorithm] 神经网络基础
- 思捷 XEN的网络逻辑 与其 locking-mode理解
- HTTP 数据包头解析
- HTTP文件断点续传的原理
- HTTP 状态码
- 网络编程的基本概念
- javaweb中深入理解HTTP Session
- Android手机网络NetWorkType对应的常量值
- 简析TCP的三次握手与四次分手
- [Mechine Learning & Algorithm] 神经网络基础
- android 网络通信之HttpURLConnection与HttpClient