如何在react-native中使用我自己的OkHttp客户端(0.54 +)

时间:2018-04-08 21:32:36

标签: react-native okhttp

我的图像和许多其他功能都位于我的后端API(用java spark框架编写)之后。这些服务仅限https,API通常执行其他功能(例如,它们不只是提供静态图像)。

在React-native javascript表单中,我做

const imageTest='https://10.0.1.10:4567/api/v1/get-image-simple/full-size/myImage.jpg/'


            <Image source={{uri : imageTest}} 
                   style={theme.cardImageStyle}
            />

这不起作用,因为我的服务器使用自签名证书 (还需要一些明确的标题)。

相同类型的图片网址链接,从我的Android主机内工作正常(我的应用程序是混合一些活动只有android,有些是反应原生)。 我的Android应用程序有自定义的okhttp客户端,具有所有必要的设置,通过HTTPs与我的apis通信。

我找不到一个如何将我的OkHTTP客户端挂钩到本机的示例/参考,以便一切都通过那里。 我曾见过各种错误报告,例如this,但似乎无法找到有关反应原生版本中实际内容的任何文档。

我试着盲目地做了

com.facebook.react.modules.network.OkHttpClientProvider.replaceOkHttpClient(
                    MyPersonalAppInstance.getApplicationComponent().okHttpClient());

但它似乎没有做任何事情;

1 个答案:

答案 0 :(得分:4)

我没有机会对此进行测试,但根据[this issue][1]的讨论,以下内容应该在0.54+中设置自定义OkHttp客户端。

创建React Native应用程序并在构造函数中设置自定义工厂,例如OkHttpClientProvider.setOkHttpClientFactory(new CustomNetworkModule());

自定义工厂的外观如下:

class CustomNetworkModule implements OkHttpClientFactory {
    public OkHttpClient createNewNetworkModuleClient() {
        return new OkHttpClient.Builder()
                        .cookieJar(new ReactCookieJarContainer())
                        .build();
    }
}

以上内容基于this commit的信息。