当React Native遇到https(Android)

本文介绍了在React Native的Android应用中处理HTTPS请求的方法,由于默认使用fetch且需添加证书,需要修改原生代码。通过替换OkHttpClient并添加证书认证来实现。详细步骤包括在`onCreate`方法中修改`NetworkingModule`和`MainReactPackage`,以适配RN的0.43.4版本。若使用其他版本,可能无需如此复杂。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言: 好长一段时间没露脸了,从上家公司跳槽到现在已经2个月的时间了,拿到了两份offer,一个做android,一个做rn,结果最后还是做了rn,当初学rn的时候都没想到rn这东西能挣钱~ 哈哈! 容我装个b,不过也还是不错的,现在公司做的app算是我接手rn真正的一个像样的一个项目,废话不多说了,先看一下我们遇到的问题,欢迎小伙伴入群,欢迎骚扰!

公司来了几套测试环境,然后都是需要加证书访问的,这就尴尬了,我们默认的网络请求用的是fetch,所以肯定是需要去修改native源码的,这里就以android为例子了(ios我也不懂~~嘿嘿)。

学android的童鞋都知道,rn默认android端请求是用的okhttps,所以也不要问我原生改怎么访问https了,大家可以参考下洪洋大神的这篇文章:
http://blog.csdn.net/lmj623565791/article/details/48129405
里面已经很详细了。

这里我们以rn的”0.43.4“版本为例子,
其实rn已经为我们提供了一个修改默认okhttpclient的方法,
我们找到这个一个文件:

这里写图片描述

NetworkingModule.java文件就是我们android最底层的网络请求工具类,每次创建NetworkingModule对象的时候,我们会传入一个okhttpclient的对象:

 public NetworkingModule(ReactApplicationContext context) {
        this(context, (String)null, OkHttpClientProvider.createClient(), (List)null);
    }

    public NetworkingModule(ReactApplicationContext context, List<NetworkInterceptorCreator> networkInterceptorCreators) {
        this(context, (String)null, OkHttpClientProvider.createClient(), networkInterceptorCreators);
    }

    public NetworkingModule(ReactApplicationContext context, String defaultUserAgent) {
        this(context, defaultUserAgent, OkHttpClientProvider.createClient(), (List)null);
    }

可以看到,每次都是通过:

OkHttpClientProvider.createClient()

的方式创建了一个okhttpclient对象,最后发送请求为:

 @ReactMethod
    public void sendRequest(ExecutorToken executorToken, String method, String url, final int requestId, ReadableArray headers, ReadableMap data, final String responseType, final boolean useIncrementalUpdates, int timeout) {
        okhttp3.Request.Builder requestBuilder = (new okhttp3.Request.Builder()).url(url);
        if(requestId != 
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值