对于https而言,获取请求在react-native中失败,而在android中则不是http

时间:2018-03-07 15:25:14

标签: android react-native react-redux

以下是我用来制作获取请求的代码。我似乎只面临一个问题,只有https请求,而不是Android中的http。我正在使用Android studio和模拟器​​来开发代码。

fetch('https://facebook.github.io/react-native/movies.json')
      .then((response) => response.json())
      .then((responseJson) => {
        console.log("Success");
      })
      .catch((error) => {
              console.error(error);
      });   

我得到的回应如下;

 D:\RNApp\newtest\TheTestApp\node_modules\react-native\Libraries\Core\ExceptionsManager.js:73 TypeError: Network request failed
        at XMLHttpRequest.xhr.onerror (D:\RNApp\newtest\TheTestApp\node_modules\whatwg-fetch\fetch.js:441)
        at XMLHttpRequest.dispatchEvent (D:\RNApp\newtest\TheTestApp\node_modules\event-target-shim\lib\event-target.js:172)
        at XMLHttpRequest.setReadyState (D:\RNApp\newtest\TheTestApp\node_modules\react-

native\Libraries\Network\XMLHttpRequest.js:569)
    at XMLHttpRequest.__didCompleteResponse (D:\RNApp\newtest\TheTestApp\node_modules\react-native\Libraries\Network\XMLHttpRequest.js:399)
    at D:\RNApp\newtest\TheTestApp\node_modules\react-native\Libraries\Network\XMLHttpRequest.js:505
    at RCTDeviceEventEmitter.emit (D:\RNApp\newtest\TheTestApp\node_modules\react-native\Libraries\vendor\emitter\EventEmitter.js:181)
    at MessageQueue.__callFunction (D:\RNApp\newtest\TheTestApp\node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:353)
    at D:\RNApp\newtest\TheTestApp\node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:118
    at MessageQueue.__guardSafe (D:\RNApp\newtest\TheTestApp\node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:316)
    at MessageQueue.callFunctionReturnFlushedQueue (D:\RNApp\newtest\TheTestApp\node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:117)

我目前正在使用react-native v0.53.3。我一直在寻找这个问题的解决方案。如果有人可以帮助我,那就太好了。

感谢。

1 个答案:

答案 0 :(得分:0)

经过大量研究和脑力破坏后,我发现问题非常简单。我使用的网络有一个代理服务器,可以加密所有SSL流量。因此,解决方案是将关联的证书安装到模拟器中。

因此,从连接到同一网络的桌面浏览器,我下载了与该代理服务器关联的所有证书,并将其导入到我的模拟器的SD卡(存储)中。可以按照this post。

中提到的步骤完成此导入和安装

一旦完成,我重新运行上面的代码,我发现响应成功通过。希望这能帮助那些陷入与我相同情况的人。