android https 绕证书
来源:互联网 发布:软件数据接口 编辑:程序博客网 时间:2024/05/18 00:11
之前很长一段时间开发android开发 网络通信都是用的http,后来到了现在的公司,网络通信是https,理论上https比http更加安全,但是公司是自建证书(后来问了一些朋友有的公司为了降低成本都没有买,都是自建证书),所以通信的过程需要绕开证书(也可以叫做信任证书),http和https在通信过程中是有一点不一样的,废话不多说直接上源码 我通信这一块用到的是RxAndroid+RxJava+OkHttp3,目前比较主流的网络请求框架。
import android.util.Log;import java.security.SecureRandom;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import java.util.concurrent.TimeUnit;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.SSLSocketFactory;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import okhttp3.MediaType;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.RequestBody;import okhttp3.Response;import rx.Observable;import rx.Subscriber;/** * Created by mrpanda on 4/5/17. */public class HTTPSRequestUtils { private static OkHttpClient okHttpClient; public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); public static Observable<String> getJson(final String path, final String json){ return Observable.create(new Observable.OnSubscribe<String>(){ @Override public void call(Subscriber<? super String> subscriber) { if(!subscriber.isUnsubscribed()){ okHttpClient = new OkHttpClient.Builder() .sslSocketFactory(createSSLSocketFactory()) .hostnameVerifier(new TrustAllHostnameVerifier()) .connectTimeout(60, TimeUnit.SECONDS) .writeTimeout(100, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .build(); RequestBody requestBody= RequestBody.create(JSON,json); Request request=new Request.Builder() .url(path) .post(requestBody) .build(); try{ Response response= okHttpClient.newCall(request).execute(); Log.e("response",response.toString()); if(response.isSuccessful()){ subscriber.onNext(response.body().string()); }else{ subscriber.onNext("获取失败!"); } subscriber.onCompleted(); }catch (Exception e){ e.printStackTrace(); } } } }); } private static class TrustAllCerts implements X509TrustManager { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {} @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {} @Override public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[0];} } private static class TrustAllHostnameVerifier implements HostnameVerifier { @Override public boolean verify(String hostname, SSLSession session) { return true; } } private static SSLSocketFactory createSSLSocketFactory() { SSLSocketFactory ssfFactory = null; try { SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, new TrustManager[] { new TrustAllCerts() }, new SecureRandom()); ssfFactory = sc.getSocketFactory(); } catch (Exception e) { } return ssfFactory; }}
阅读全文
0 0
- android https 绕证书
- Android HTTPS 使用证书
- Android添加https证书
- Android Https证书认证
- android https HttpsURLConnection 忽略证书
- Android https 自定义 证书 问题
- Android:Https跳过证书验证、Https使用证书、HttpClient、
- 【Android Trick 2】HTTPS请求忽略证书
- Https双向验证证书:Android+OpenSSL
- Android Volley Https证书不信任解决方案
- Android开发之信任所有https证书
- Android 7.0 https/tls证书配置问题
- Android 4.4系统HTTPS证书校验
- android webview 加载https --忽略证书
- react-native for android https证书认证
- android https遇到自签名证书/信任证书
- https 证书
- https证书
- 闭包为何可实现变量持久性
- 手机突然没信号!伪基站究竟是怎样搞鬼的?
- 浅谈js中 call, apply, bind 的区别
- tensorflow中tf.app.run()的含义
- Redis学习(一)概述
- android https 绕证书
- mysql索引类型和索引方法
- 日期格式工具类
- eclipse在选定区域范围内替换文本
- Unsupported major.minor version 51.0解决 maven
- 微信公众号上传图文素材thumb_media_id的获得
- 产品的一生:从需求发现到开发完成上线
- 【FX】FX入门
- mfc变量的命名约定——匈牙利表示法