我正在使用React Native Fetch API从https://api.github.com/users/{username}
获取JSON数据,但请求失败并出现以下错误信息。
"TypeError: 网络请求失败{stack: (...), message: '网络请求失败'}"。
我认为对于https协议,有时会出现NSURLAuthenticationChallenge的情况。我不确定如何实现这个。有人有关于此的任何想法吗?
我正在使用React Native Fetch API从https://api.github.com/users/{username}
获取JSON数据,但请求失败并出现以下错误信息。
"TypeError: 网络请求失败{stack: (...), message: '网络请求失败'}"。
我认为对于https协议,有时会出现NSURLAuthenticationChallenge的情况。我不确定如何实现这个。有人有关于此的任何想法吗?
如果您使用的是iOS系统,您可能需要执行以下操作:
您必须启用AppTransportSecurity功能。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<uses-permission android:name="android.permission.INTERNET" />
你能提供一个 fetch
代码片段吗?
通常,一个 fetch
语句的写法是:
fetch(requestURL)
.then( (response) => response.json() )
.then( (data) => {
this.setState({data: data});
})
.catch( (error) => console.log(error) )
.done();
我也经常遇到 React Native Fetch Request Fails
的问题。
在我的情况下,API调用的响应大小约为5kb,因此我从API响应中删除了不必要的数据,并将结果大小缩小到约1kb,然后一切都开始正常工作。
因此,请尝试限制您从API请求的数据量。
连接到网络。
重新启动模拟器。
你尝试过使用XMLHttpRequest
吗?
正如文档中所示, XMLHttpRequest
支持https
:
var request = new XMLHttpRequest();
request.onreadystatechange = (e) => {
if (request.readyState !== 4) {
return;
}
if (request.status === 200) {
console.log('success', request.responseText);
} else {
console.warn('error');
}
};
request.open('GET', 'https://mywebsite.com/endpoint.php');
request.send();
/
。另外,插值使用#{username}
完成。 - MikaelCfetch
一个无效的URL,但在没有你展示一些代码的情况下,无法确定造成错误的原因。 - Mark Amery