博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android httpClient(https/http)的优化构建方式二
阅读量:6446 次
发布时间:2019-06-23

本文共 2479 字,大约阅读时间需要 8 分钟。

hot3.png

由于时间原因,这里只构建所有请求https都能通过的请求client

首先定义(重写)信任管理器

    public class SSLTrustManager implements javax.net.ssl.TrustManager,            javax.net.ssl.X509TrustManager ,HostnameVerifier{        public java.security.cert.X509Certificate[] getAcceptedIssuers() {            return null;        }         public boolean isServerTrusted(                java.security.cert.X509Certificate[] certs) {            return true;        }         public boolean isClientTrusted(                java.security.cert.X509Certificate[] certs) {            return true;        }         public void checkServerTrusted(                java.security.cert.X509Certificate[] certs, String authType)                throws java.security.cert.CertificateException {            return;        }         public void checkClientTrusted(                java.security.cert.X509Certificate[] certs, String authType)                throws java.security.cert.CertificateException {            return;        }                	@Override		public boolean verify(String urlHostName, SSLSession session) { //允许所有主机			return true;		}    }

然后封装

 public static HttpURLConnection connect(String strUrl) throws Exception {            	 javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];         javax.net.ssl.TrustManager tm = new SSLTrustManager();         trustAllCerts[0] = tm;         javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext                 .getInstance("SSL");         sc.init(null, trustAllCerts, null);         javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc                 .getSocketFactory());                  HttpsURLConnection.setDefaultHostnameVerifier((HostnameVerifier) tm);                 URL url = new URL(strUrl);        HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();             return urlConn;    }

测试一下

public void unitest(){     HttpURLConnection urlConn = connect('https://github.com/');        urlConn.setDoInput(true);        urlConn.setRequestMethod("GET");        urlConn.connect();        InputStream is = urlConn.getInputStream();        StringBuffer sb = new StringBuffer();        if(is!=null)        {        	BufferedReader br = new BufferedReader(new InputStreamReader(is));        	String s = null;        	while ((s=br.readLine())!=null)        	{				sb.append(s).append("\n");			}        }        System.out.println("Content:\n"+sb.toString());}

try do it!

转载于:https://my.oschina.net/ososchina/blog/339897

你可能感兴趣的文章
IDM百度云使用
查看>>
C#设计模式之十九策略模式(Stragety Pattern)【行为型】
查看>>
28. Implement strStr()
查看>>
method initializationerror not found:JUnit4单元測试报错问题
查看>>
架构考虑
查看>>
关于在页面得到的servlet验证码总是上一次保存在session中的
查看>>
mac重装系统
查看>>
T470 Win10下触摸板手势
查看>>
如何恢复 Linux删除的文件
查看>>
Myeclipse中解决spring配置文件无提示问题
查看>>
处理模型数据时@ModelAttribute的使用
查看>>
Java做一个时间的程序,为什么要除以1000*60*60*24啊。这个数字是什么意思啊。...
查看>>
使用git、git-flow与gitlab工作
查看>>
面试-1
查看>>
【windows7】解决IIS 80端口占用问题(亲测)
查看>>
鹅厂优文 | 怎样用AI运维
查看>>
Centos6.7搭建ISCSI存储服务器
查看>>
设置textField的placegolder的字体大小和字体颜色
查看>>
判断对象属性的值是否空,如为空,删除该属性
查看>>
iOS中UITextField输入判断小数点后两位
查看>>