不使用React Native从localhost获取JSON数据

时间:2018-06-17 12:09:07

标签: json reactjs react-native react-native-android

这可能是重复的问题,但我尝试了大部分来自互联网的东西但没有成功。 我是React Native的新手。我正在使用物理设备(我的Android手机)作为运行我的输出,并尝试从我在localhost(默认端口80)中用PHP编码的测试项目之一获取JSON数据。

这是我的Login.js登录功能,用于获取数据:

login = () => {
    fetch('http://localhost/XTest/send_react', {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        username: this.state.username,
        password: this.state.password,
      })
    })
    .then((response) => response.json())
    .then((res) => {
      if (res.success === true) {
        AsyncStorage.setItem('user', res.user);
        this.props.navigation.navigate('Profile');
      } else {
        alert(res.message);
      }
    })
    .done();

我通过加载上面的url来测试我的PHP代码,它提供了JSON数据。但我在React Native中加载的是:

  

网络请求失败,错误代码为红色。

我尝试更改我的网址=> ' HTTP:/本地主机:80 / XXXXXXXXX'甚至添加了#34;代理":' http://localhost/'正如网页中某处所建议的那样,但没有任何成功。任何帮助或建议将不胜感激。谢谢。

5 个答案:

答案 0 :(得分:0)

那是因为localhost只对设备是本地的。 您需要运行PHP的实际设备的IP地址(如果它在同一网络上可能看起来像192.168.xx)在终端或命令提示符中尝试import numpy as np a = np.array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0]) args = np.argsort(-a)[:2] array([0, 5], dtype=int64) 也可以查看所有设备的地址网络。

答案 1 :(得分:0)

fetch('http://YOURIP(192.168.X.X):YOURPORT', {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
      },

答案 2 :(得分:0)

对于遇到此问题的Android模拟器(Genymotion),只需确保在端口IP address后使用本地number。您可以在本地终端或命令提示符中使用ipconfig轻松识别。

我在React-Native中使用匿名函数的示例

login = () => {

fetch('http://192.x.x.x:PORT', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({ 
      username: this.state.username, 
      password: this.state.password }),
}).then(res => {
  console.log(res)
}).catch(err => {
  console.log(err)
})
  ...etc 
}

答案 3 :(得分:0)

我也有同样的问题,任何人都可以找到解决方案。我尝试使用IP地址,但未给出响应。请看下面的代码。

let email = this.state.email;
let pass = this.state.pass;

fetch("http://192.168.1.2:8080/ReactAPI/post.php", {
      method: "POST",
      body: JSON.stringify({
        email: email,
        password: pass
      }),
      headers: {
        "Content-Type": "application/json",
        Accept: "application/json"
      }
    })
      .then(response => console.log(response))
      .catch(err => console.log(err));

答案 4 :(得分:0)

您可以在特定IP上启动服务器...

例如如果是json-server,-host [IP-address]将在该位置启动服务器:

json-server --watch db.json -p 3001 -d 2000 --host 192.168.83.230