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