Android Retrofit Http加密(无证书加密)

前提:本文基于Retrofit + okhttp(下面代码可以直接复制使用!)

一、Retrofit常规使用如下:

OkHttpClient okHttpClient =new Builder()

.readTimeout(READ_TIME_OUT, TimeUnit.SECONDS)

.connectTimeout(CONNECT_TIME_OUT, TimeUnit.SECONDS)

.cache(new Cache(file, NET_CACHE_SIZE))

.cookieJar(new CookiesManager())

.addInterceptor(httpLoggingInterceptor)

.addNetworkInterceptor(new Interceptor() {

@Override

            public Responseintercept(Chain chain)throws IOException {

Request original = chain.request();

                Request.Builder rb = original.newBuilder();

                rb.addHeader("token", filterValue(UserPref.getInstance().getToken()));

                return chain.proceed(rb.build());

            }

})

.build();

mService =new retrofit2.Retrofit.Builder()

.client(okHttpClient)

.addConverterFactory(GsonConverterFactory.create())

.addCallAdapterFactory(RxJava2CallAdapterFactory.create())

.baseUrl(baseUrl)

.build().create(ApiServer.class);

二、给http加密转https无证书需要添加如下代码

OkHttpClient okHttpClient =new Builder()

.sslSocketFactory(SSLSocketFactoryUtil.createSSLSocketFactory(), SSLSocketFactoryUtil.createTrustAllManager())

.hostnameVerifier(new SSLSocketFactoryUtil.TrustAllHostnameVerifier())

三、上面使用到的工具类SSLSocketFactoryUtil如下:

public class SSLSocketFactoryUtil {

/**

* @return

* init SSLSocketFactory

*/

public static SSLSocketFactorycreateSSLSocketFactory() {

SSLSocketFactory sslSocketFactory =null;

    try {

SSLContext sslContext = SSLContext.getInstance("SSL");

        sslContext.init(null, new TrustManager[]{createTrustAllManager()}, new SecureRandom());

        sslSocketFactory = sslContext.getSocketFactory();

    }catch (Exception e) {

}

return sslSocketFactory;

}

/**

* @return

* init X509TrustManager

*/

public static X509TrustManagercreateTrustAllManager() {

X509TrustManager trustManager =null;

    try {

trustManager =new X509TrustManager() {

public void checkClientTrusted(X509Certificate[] chain, String authType){

//do nothing

            }

public void checkServerTrusted(X509Certificate[] chain, String authType){

//do nothing

            }

public X509Certificate[]getAcceptedIssuers() {

return new X509Certificate[0];

            }

};

    }catch (Exception e) {

}

return trustManager;

}

/**

* make TrustAllHostnameVerifier always true

*/

public static class TrustAllHostnameVerifierimplements HostnameVerifier {

@Override

    public boolean verify(String hostname, SSLSession session) {

return true;

    }

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值