TypeError:网络请求失败(使用 ReactNative 和 Django)

Posted

技术标签:

【中文标题】TypeError:网络请求失败(使用 ReactNative 和 Django)【英文标题】:TypeError: Network request failed (using ReactNative and Django) 【发布时间】:2022-01-14 21:52:32 【问题描述】:

我正在使用 React Native 开发一个移动应用程序,并且在后端有一个 Django 中的 REST API。我想从应用向我的 API 发出 POST 请求。

代码

function sendDpi() 
const requestOptions = 
  method: 'POST',
  headers: 
    Accept: 'application/json',
    'Content-Type': 'application/json',
  ,
  body: JSON.stringify(
    dpi: imageDpi,
  ),
;
fetch('http://127.0.0.1:8000/', requestOptions)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => 
    console.log(error);
  );

当我的应用程序调用sendDpi() 时,我得到[TypeError: Network request failed]127.0.0.1:8000 是我的 Django 应用程序运行的地方。我也尝试过使用我的 IP 地址(正如this 回答所指出的那样)。 我还修改了android/app/src/main/AndroidManifest.xml 以包含android:usesCleartextTraffic="true"

【问题讨论】:

【参考方案1】:

之前的建议很好,只是所需的 URL 应该是 http://10.0.2.2:8000 而不是 http://10.0.2.2/8000

【讨论】:

【参考方案2】:

我认为127.0.0.1:8000 也是本地主机。如果您使用物理设备进行测试,则需要找到您的外部 IP 地址。

你在安卓模拟器上测试你可以使用http://10.0.2.2/8000。

还可以先尝试使其与 http 一起使用。您可能没有有效的 SSL 证书。如果 SSL 证书无效,您还会得到 [TypeError: Network request failed]

【讨论】:

当我使用 10.0.2.2/8000 或我的外部 IP 地址时,我得到了同样的错误。您所说的“首先使用 HTTP”是什么意思? 如果您的 Django 应用程序服务于“https://”并且您没有有效的 ssl 证书,那么您将收到错误消息。 Django 应用程序可以用作“http://”吗? 是的,它可以作为'http://' @protonpasta 你还有问题吗?会不会是防火墙问题?您可以尝试通过 ngrok 为您的 django 应用程序提供服务:twilio.com/blog/…。

以上是关于TypeError:网络请求失败(使用 ReactNative 和 Django)的主要内容,如果未能解决你的问题,请参考以下文章

react-native 错误:[未处理的承诺拒绝:错误:获取 Expo 令牌时遇到错误:TypeError:网络请求失败。]

未处理的承诺拒绝:TypeError:网络请求失败 - 在 React Native / Expo 中将 Base64(视频/mp4)转换为 Blob

TypeError:网络请求失败(使用 ReactNative 和 Django)

Axios 承诺处理 - 在 react-native 中获取“可能的未处理承诺拒绝 - 类型错误:网络请求失败”

TypeError:网络请求失败android

可能的未处理承诺拒绝(id:1):TypeError:网络请求失败