使用React Native中的axios使用带有params的GET方法的HTTP响应

时间:2016-12-27 15:08:13

标签: javascript json react-native httprequest axios

我认为这可能是一个非常简单的问题,但我是Web请求的新手,可以使其工作,也不会在网络上获得简单的响应

我有一个网站,我可以通过将此网址放入浏览器来获取JSON响应:http://www.test.com/callservice.php?action=stop&x=1&y=2&ct=100

这反过来给了我一些JSON响应。

现在,我正在尝试使用Axios在Javascript中使用相同的内容。

直接使用网址

 componentWillMount() {
    axios.get('http://www.test.com/callservice.php?action=stop&x=1&y=2&ct=100')
      .then(response => console.log(response));
  }

或者使用GET参数:

 componentWillMount() {
    axios.get('http://www.test.com/callservice.php', {
      params: {
        action: 'stop',
        x: 1,
        y: 2,
        ct=100
      }
    })
      .then(response => console.log(response));
  }

但两种方法都会产生同样的错误:

Possible Unhandled Promise Rejection (id: 0):
Network Error
Error: Network Error

捕获时出现更详细的错误:

Error: Network Error
    at createError (createError.js:15)
    at XMLHttpRequest.handleError (xhr.js:87)
    at XMLHttpRequest.dispatchEvent (event-target.js:172)
    at XMLHttpRequest.setReadyState (XMLHttpRequest.js:542)
    at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:378)
    at XMLHttpRequest.js:482
    at RCTDeviceEventEmitter.emit (EventEmitter.js:181)
    at MessageQueue.__callFunction (MessageQueue.js:236)
    at MessageQueue.js:108
    at guard (MessageQueue.js:46)

2 个答案:

答案 0 :(得分:1)

jbssm, 看来你正在研究IOS。您可以使用Xcode检查项目设置中的应用传输安全设置吗。

Xcode禁用http连接,默认情况下只允许安全连接。 你应该添加"允许仲裁负载"到您的项目设置

答案 1 :(得分:0)

这似乎是CORS问题。

如果您是脚本的所有者(在服务器上),则可以添加适当的响应标头以处理此问题。在PHP中会是这样的:

<?php header("Access-Control-Allow-Origin: *");

出于测试目的(或者如果您无权访问服务器),可以安装chrome extension来禁用跨域限制。