React Native assembleRelease无法使用axios获取数据

时间:2019-05-18 19:22:50

标签: android ios react-native axios nodeapi

我有一个实时工作的宁静API,它返回用nodeJS创建并上传到WebServer的JSON数据。另外,我正在使用react native来为android和iOS构建前端。当我使用'react-native run-android'在android中构建应用的调试版本时,api可以正常工作并返回预期的数据。但是,当我使用“ cd android && ./gradlew assembleRelease”在android中构建发行版时,该应用似乎无法从API提取数据。我的应用程序在节点服务器上找不到任何匹配。 我将axios用于我的http请求。

2 个答案:

答案 0 :(得分:0)

我的问题已解决。根据Google的官方文档,只有使用有效SSL证书的安全域才能向Web服务器请求。要强制来自不安全域或具有自签名证书的域的HTTP请求,只需在其中添加文件

  

“ yourProject / android / app / src / main / res / xml / network_security_config.xml”

具有以下内容-

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>

    <domain-config cleartextTrafficPermitted="true">

        <!-- For React Native Hot-reloading system -->
        <!-- If you are running on a device insert your computer IP -->
        <domain includeSubdomains="true">localhost</domain>
        <domain includeSubdomains="true">your own domain ip</domain>

        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>

    </domain-config>

    <base-config cleartextTrafficPermitted="false" />

</network-security-config>

,然后通过在应用程序标记之间将这一行添加到AndroidManifest.xml中来导入xml文件-

<application...
    android:networkSecurityConfig="@xml/network_security_config"
...>

答案 1 :(得分:0)

android/app/src/main/AndroidManifest.xml 中添加 android:usesCleartextTraffic="true" 对我来说效果很好。我们可能还想在 debug 文件夹(main 的同级)中添加用于开发目的。