【问题标题】:React Native Android app Network request failed for any HTTPS URL任何 HTTPS URL 的 React Native Android 应用程序网络请求都失败
【发布时间】:2021-08-27 15:59:22
【问题描述】:

最近,我在物理设备上遇到了 React Native Android 应用程序的“网络请求失败”问题。 奇怪的是,它在模拟器上运行良好,但只在 Android 7、8 等物理设备上失败。我已将 Android Studio 升级到最新版本,将 React Native 升级到最新版本,但仍然遇到此问题。 p>

fetch('https://jsonplaceholder.typicode.com/todos/1')
  .then(response => response.json())
  .then(json => console.log("MYJSONRESPONSE", json))
  .catch(e => console.log("ERRORRESP", e))

上面是一个简单的 API 调用,即使我输入任何其他有效的 API URL,它仍然会显示相同的网络错误。我尝试过的其他一些示例 API https://dummyapi.io/data/v1/user?limit=10 https://reqres.in/api/users?page=2

[TypeError: Network request failed]

即使在 0.62 或 0.65 上,新的 react 原生项目也会发生这种情况

 "dependencies": {
    "react": "17.0.2",
    "react-native": "0.65.1"
  }

有人对此问题有任何解决方案吗?

【问题讨论】:

  • 您的设备是否在网络上工作?你能在浏览器上去一个网站吗?您可以在浏览器中手动点击网址吗?这听起来更像是设备上的网络问题。
  • 一切都在我用于测试的 Android 设备上运行。唯一的问题是 React Native 应用程序在物理设备上的 Android 应用程序的调试模式和发布模式下抛出“网络请求失败”错误。虽然它在模拟器上运行良好。
  • 这种情况只发生在 Android 上吗?
  • 是的,我在描述中也提到了。网络请求失败问题仅发生在 Android 物理设备上。它在 Android 模拟器和 iPhone 模拟器上也能正常工作。

标签: android react-native android-studio


【解决方案1】:

问题已解决,解决办法是,

android:usesCleartextTraffic (adding this line in android Manifest file)

(可选)为系统/自定义域设置网络安全组。

https://developer.android.com/training/articles/security-config

重要提示:在物理设备甚至模拟器上进行测试时,请确保您已连接到正常工作的互联网 联系。我挣扎了几个小时只是因为我的互联网没有 在这种情况下正常工作并且“网络请求失败”错误 由于“没有互联网”而到来。互联网恢复正常后,一切正常。

谢谢大家的建议。

【讨论】:

    【解决方案2】:

    如果您添加 www 可能会起作用,例如 https://www.jsonplaceholder.typicode.com/todos/1

    【讨论】:

    • 我也试过了,但似乎没有一个 API 在物理设备上运行,而在模拟器上运行良好。问题出在物理设备上,其他应用程序和网站在该设备上运行良好。甚至 API 也适用于该设备的浏览器,但不适用于 Android 应用。
    猜你喜欢
    • 1970-01-01
    • 2021-04-07
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 2018-06-18
    • 2018-06-16
    • 2019-01-19
    相关资源
    最近更新 更多