react-native https notwork request failed

V0.62.0 android遇上https:notwork request failed

在MainApplication.java同級(jí)新建CustomClientFactory文件,上圖。

CustomClientFactory代碼:

package com.facebook.react.modules.network;

import com.facebook.react.modules.network.OkHttpClientFactory;

import com.facebook.react.modules.network.OkHttpClientFactory;

import com.facebook.react.modules.network.OkHttpClientProvider;

import com.facebook.react.modules.network.ReactCookieJarContainer;

import java.security.cert.CertificateException;

import java.util.ArrayList;

import java.util.List;

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.CipherSuite;

import okhttp3.ConnectionSpec;

import okhttp3.OkHttpClient;

import okhttp3.TlsVersion;

import static android.content.ContentValues.TAG;

public class CustomClientFactory implements OkHttpClientFactory {

? ? private static final String TAG = "OkHttpClientFactory";

? ? @Override

? ? public OkHttpClient createNewNetworkModuleClient() {

? ? ? ? try {

? ? ? ? ? ? // Create a trust manager that does not validate certificate chains

? ? ? ? ? ? final TrustManager[] trustAllCerts = new TrustManager[]{

? ? ? ? ? ? ? ? ? ? new X509TrustManager() {

? ? ? ? ? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? ? ? ? ? public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {

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

? ? ? ? ? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? ? ? ? ? public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException {

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

? ? ? ? ? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? ? ? ? ? public java.security.cert.X509Certificate[] getAcceptedIssuers() {

? ? ? ? ? ? ? ? ? ? ? ? ? ? return new java.security.cert.X509Certificate[]{};

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

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? };

? ? ? ? ? ? // Install the all-trusting trust manager

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

? ? ? ? ? ? sslContext.init(null, trustAllCerts, new java.security.SecureRandom());

? ? ? ? ? ? // Create an ssl socket factory with our all-trusting manager

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

? ? ? ? ? ? OkHttpClient.Builder builder = new OkHttpClient.Builder()

? ? ? ? ? ? ? ? ? ? .connectTimeout(0, TimeUnit.MILLISECONDS).readTimeout(0, TimeUnit.MILLISECONDS)

? ? ? ? ? ? ? ? ? ? .writeTimeout(0, TimeUnit.MILLISECONDS).cookieJar(new ReactCookieJarContainer());

? ? ? ? ? ? builder.sslSocketFactory(sslSocketFactory, (X509TrustManager) trustAllCerts[0]);

? ? ? ? ? ? builder.hostnameVerifier(new HostnameVerifier() {

? ? ? ? ? ? ? ? @Override

? ? ? ? ? ? ? ? public boolean verify(String hostname, SSLSession session) {

? ? ? ? ? ? ? ? ? ? return true;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? });

? ? ? ? ? ? OkHttpClient okHttpClient = builder.build();

? ? ? ? ? ? return okHttpClient;

? ? ? ? } catch (Exception e) {

? ? ? ? ? ? // Log.e(TAG, e.getMessage());

? ? ? ? ? ? throw new RuntimeException(e);

? ? ? ? }

? ? }

}




在MainApplication中添加

import com.facebook.react.modules.network.*;

onCreate()方法中添加:OkHttpClientProvider.setOkHttpClientFactory(new CustomClientFactory()); //add this line.


重啟就ok了

注:post請(qǐng)求需加content-type

end

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

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