繁体   English   中英

在android上反应本机获取网络请求失败

[英]react native Fetch Network request failed on android

我正在尝试从 mocky 接收一些简单的 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 中的地址,它返回了预期的模拟数据。 但是当在我的安卓手机上调用这个函数时,我得到了这个错误在此处输入图像描述

来自远程调试器的错误

...\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,它指向一个 web url,它加载完美,所以我确信手机有互联网权限和访问权限等。

在最新的 android 版本中,默认情况下不允许 http 请求。 查看这篇文章以获取有关允许 http 请求的更多信息: 如何在 Android (9) Pie 中允许所有网络连接类型 HTTP 和 HTTPS?

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

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

毕竟可能不是 android 或 react native 相关的问题。 邮递员中的 mockapi.io 也有问题,尽管它在 chrome 中运行良好。

如果您使用的是模拟器,请使用浏览器在此模拟中检查互联网是否正常工作。 如果不检查: Android 模拟器无法访问互联网

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

请检查后端响应状态。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM