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)