HTTP提取请求始终在react-native上失败

时间:2019-05-21 09:57:30

标签: http react-native request fetch

我的服务器上有一个未配置https的后端。在使用http正常工作之前,一切正常。由于某种原因,我现在收到此错误:

TypeError: Network request failed
    at XMLHttpRequest.xhr.onerror (whatwg-fetch.js:504)
    at XMLHttpRequest.dispatchEvent (event-target.js:172)
    at XMLHttpRequest.setReadyState (XMLHttpRequest.js:580)
    at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:394)
    at XMLHttpRequest.js:507
    at RCTDeviceEventEmitter.emit (EventEmitter.js:181)
    at MessageQueue.__callFunction (MessageQueue.js:366)
    at MessageQueue.js:106
    at MessageQueue.__guard (MessageQueue.js:314)
    at MessageQueue.callFunctionReturnFlushedQueue (MessageQueue.js:105)

我用Google搜索,看起来问题出在http。与其他API上的https配合使用时效果很好。但是我没有配置http。有没有办法让它现在仅与http一起使用?

3 个答案:

答案 0 :(得分:1)

如果您正在Android上进行测试,则需要启用clearTextTraffic,以便系统允许您的应用通过HTTP进行通信。

在您的AndroidManifest.xml中添加android:usesCleartextTraffic="true"

答案 1 :(得分:1)

好的。带有romin21的提示,我现在开始使用它。有一个文件

android / app / src / debug / res / xml / react_native_config.xml

会覆盖您的AndroidManifest。因此,起初我尝试将其添加到AndroidManifest中,但是它当然不起作用,我已经将该文件覆盖了。但是,当我将后端的ip地址添加到该文件时,它可以正常运行

<domain includeSubdomains="false">YOUR IP</domain>

答案 2 :(得分:0)

解决方案之一是将以下代码添加到AndroidManifest.xml文件

android:usesCleartextTraffic="true"

但是在我的情况下,我只想允许我的API域,所以我在android/app/src/res/xml/network-security-config.xml文件中添加了以下代码。

<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="false">localhost</domain>
        <domain includeSubdomains="false">Your IP/Domain</domain>
    </domain-config>

</network-security-config>

我希望这会有所帮助。谢谢!