开发者问题收集

在 React Native 中使用 axios 通过带参数的 GET 方法获取 HTTP 响应

2016-12-27
1665

我认为这可能是一个非常简单的问题,但我对 Web 请求很陌生,无法使其正常工作,也无法在 Web 上搜索到简单的响应

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

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

现在,我尝试使用 Axios 在 Javascript 中获得相同的结果。

直接使用 URL

 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个回答

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

Xcode 禁用 http 连接,因为默认仅允许安全连接。 您应该将“允许任意加载”添加到项目设置中

Tolga Cagin
2017-01-05

这似乎是 CORS 问题。

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

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

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

Diogo Sgrillo
2016-12-27