OKHttp請求https證書驗證

拿到srca.cer證書放入assets文件中

參考原文@我們不生產(chǎn)代碼, 只是Bug 的搬運工

private static SSLSocketFactory sslSocketFactory = null;

public static void getSocketFactory() {? ?

????try {? ? ? ?

????????InputStream certificate = MyApplication.mContext.getAssets().open("srca.cer");? ? ? ?

????????CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");? ? ? ?

????????KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());? ? ? ?

????????keyStore.load(null);? ? ? ?

????????int index = 0;? ? ? ?

????????String certificateAlias = Integer.toString(index++);? ? ? ?

????????keyStore.setCertificateEntry(certificateAlias, certificateFactory.generateCertificate(certificate));? ? ? ?

????????try {? ? ? ? ? ?

????????????if (certificate != null)? {? ? ? ? ? ? ?

????????????????certificate.close();? ? ? ?

? ? ? ? ? ? }

????????} catch (IOException e) {? ? ? ? ? ?

????????????????e.printStackTrace();? ? ? ?

????????}? ? ? ?

????????SSLContext sslContext = SSLContext.getInstance("TLS");? ? ? ?

????????TrustManagerFactory trustManagerFactory =? ? ? ? ? ? ? ? TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());? ? ? ?

????????trustManagerFactory.init(keyStore);? ? ? ?

????????sslContext.init( null,? trustManagerFactory.getTrustManagers(),? new SecureRandom() );? ? ? ?

????????sslSocketFactory = sslContext.getSocketFactory();? ?

????} catch (Exception e) {? ? ? ?

????????e.printStackTrace();? ?

????}

}


?????/*** get請求**/

????public void sendGetRepuest(String url, final CallBacks callbacks) {? ?

? ? ? ? final Request request = new Request.Builder().url(url).build();? ?

????????client.newBuilder()

????????????.connectTimeout(timeOut, TimeUnit.SECONDS)

????????????.readTimeout(timeOut, TimeUnit.SECONDS)? ? ? ? ? ?

????????????.writeTimeout(timeOut, TimeUnit.SECONDS)? ? ? ? ? ? ????????????

????????????.sslSocketFactory(sslSocketFactory)//設(shè)置sslSocketFactory? ? ? ? ? ?

????????????.build();? ?

????????client.newCall(request).enqueue(new Callback() {? ? ? ?

????????????@Override? ? ? ? public void onFailure(Call call, IOException e) {? ? ? ? ? ?

????????????????callbacks.onError(e.toString());? ? ? ?

????????????}? ? ? ?

????????????//解析成功? ? ? ?

????????????@Override? ? ? ? public void onResponse(Call call, Response response) throws IOException {? ? ? ? ? ?

????????????????if (response != null && response.isSuccessful()) {? ? ? ? ? ? ? ?

????????????????????callbacks.onSuccess(response.body().string());? ? ? ? ? ?

????????????????} else {? ? ? ? ? ? ? ?

????????????????????callbacks.onError(response.toString());? ? ? ? ? ?

????????????????}? ? ? ?

????????????}? ?

????});

}


?public class MyApplication extends Application {? ?

????public static Context mContext = null;? ?

????@Override? ? public void onCreate() {? ? ? ?

????????super.onCreate();? ? ? ?

????????mContext = this;? ? ? ?

????????OkHttpUtils.getSocketFactory();? ?

????}

}

作者的閑章野筆

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容