在Android上反应本地Fetch Network请求失败

时间:2019-03-28 13:13:15

标签: android react-native fetch

我正试图从模仿中接收一些简单的json。

反应本机提取功能:

getMemberDomainList = async (name) => {
  try {
    let response = await fetch('https://5c9cc9ed3be4e30014a7d287.mockapi.io/api/domain', {
      method: 'POST',
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
      },
    });
    let responseJson = await response.json();
    return responseJson;
  } catch (error) {
    console.error(error);
  }
}

我已经在Windows上测试了Chrome中的地址,它返回了预期的模拟数据。但是在我的Android手机上调用该函数时,出现此错误 enter image description here

来自远程调试器的错误

...\node_modules\react-native\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:2348 TypeError: Network request failed
    at XMLHttpRequest.xhr.onerror (...\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:4337)
    at XMLHttpRequest.dispatchEvent (...\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:10760)
    at XMLHttpRequest.setReadyState (...\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:10511)
    at XMLHttpRequest.__didCompleteResponse (...\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:10343)
    at ...\Libraries\Renderer\oss\ReactNativeRenderer-dev.js:10449
    at RCTDeviceEventEmitter.emit (...\Libraries\Components\DrawerAndroid\DrawerLayoutAndroid.android.js:11)
    at MessageQueue.__callFunction (...\Libraries\ART\ReactNativeART.js:362)
    at blob:http://localhost:8081/79251787-d190-4650-8040-23d091c08738:2334
    at MessageQueue.__guard (...\Libraries\ART\ReactNativeART.js:312)
    at MessageQueue.callFunctionReturnFlushedQueue (...\Libraries\ART\ReactNativeART.js:139)

我也在我的应用程序中运行一个WebView,该WebView指向一个Web URL,它可以完美加载,因此我确定手机具有互联网许可和访问权限等。

4 个答案:

答案 0 :(得分:1)

如果您正在使用仿真器,则使用浏览器检查此仿真中的Internet是否正常工作。如果没有,请检查以下内容:Android emulator not able to access the internet

我在模拟器中也遇到了这个问题,但是当我生成一个发布应用并安装在真实设备(andoid 9)中时,它就可以正常工作。

答案 1 :(得分:0)

在最新的android版本中,默认情况下不允许http请求。看看这篇文章,了解有关允许http请求的更多信息:How to allow all Network connection types HTTP and HTTPS in Android (9) Pie?

答案 2 :(得分:0)

无法使mockapi.io工作。但是在使用以下服务时错误不会持续存在:

https://jsonplaceholder.typicode.com/todos/1

毕竟不是Android或反应与本机相关的问题。邮递员中的mockapi.io也有问题,尽管在chrome中工作正常。

答案 3 :(得分:0)

请检查后端响应状态。

如果后端使用205状态发送内容-205 RESET CONTENT

Android系统将其识别为错误-HTTP 205 had non-zero Content-Length: 25

您可以在邮递员上查看状态码。 因此,在这种情况下,错误应在后端修复。 它应该发送带有200状态代码的内容。