一、 概述
最近在Android开发群里听小伙伴们问道了一个关于OkHttp加了证书能访问到Https的url,但是访问不到Http的url,对此,当时想到的是实例化两个OkHttp的对象,一个加证书访问,另一个不加证书去访问,自己也没有实践,也只是凭空想象,不知道你们是不是也是这样想的呢?言归正传,今天就能讲讲自己用HttpsUrlConnection来访问证书链接。
二、核心代码
精简一下代码:
这里我写了一个工具类,ParseUtils。
- 解析json
- 解析图片
- 解析xml
public class ParseUtils {
public final static String HOST = "cil.vicenter";
/**
* 解析公用方法(含有验证证书部分)
* @param ctx
* @param result
* @param url
* @return
* @throws IOException
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public static String ParseResult(Context ctx,String result, URL url)
throws IOException, NoSuchAlgorithmException,
KeyManagementException {
HttpsURLConnection conn;
conn = (HttpsURLConnection) url.openConnection();
conn.setSSLSocketFactory(HttpUrlConnSSLSocketFactory
.getSSLSocketFactory(ctx));
conn.setConnectTimeout(5 * 1000);
conn.setReadTimeout(10 * 1000);
conn.setHostnameVerifier(new AllowAllHostnameVerifier());
conn.addRequestProperty("Accept-Language", Locale.getDefault().toString());
conn.addRequestProperty("Hos