2015-04-27 163 views
10

我正在使用反应本机提取API从https://api.github.com/users/{username}获取JSON数据,但请求失败并显示以下错误消息。React本机提取请求失败

"TypeError: Network request failed {stack: (...), message: 'Network request failed'}".

相信对于HTTPS,有时你NSURLAuthenticationChallenge。我不知道如何实现这一点。任何人都有这个想法吗?

+0

如果没有代码片段很难说,但你可以尝试在你正在使用的url的末尾添加'/'。也使用'#{用户名}'完成插值。 – GoldenBeet

+0

您能否提供一些最低限度的代码来重现此错误?获得它的一种方法是尝试“获取”一个无效的URL,但没有办法说明是什么导致了你的情况,而不显示一些代码。 –

回答

-3

你试过XMLHttpRequest

作为证明in the dochttpsXMLHttpRequest支持:

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(); 
+0

在您发布的同一文档中,它表明您可以使用Fetch进行https操作 –

2

你能提供你的fetch代码段?

一般来说,fetch声明是这样写的:

fetch(requestURL) 
    .then((response) => response.json()) 
    .then((data) => { 
    this.setState({data: data}); 
    }) 
    .catch((error) => console.log(error)) 
    .done(); 

捕获错误将允许该程序没有崩溃进行。

0

在我的情况下,问题不在代码中。没有网络时我开始模拟器。在登录到仿真器上的无线网络点网络后,仍然无法正常工作。我重新启动了模拟器 - 一切正常。

所以:

  1. 连接到网络。

  2. 重新启动模拟器。

如果没有帮助,请检查您的代码。

0

我也有这个问题React Native Fetch Request Fails非常频繁。

在我的情况下,来自API调用的响应大约为5kb,因此我从API响应中删除了不必要的数据,并将结果大小减小到1kb左右,并开始工作。

因此,尝试限制您从API请求的数据。