React Native Android获取网络请求错误

时间:2019-01-25 18:18:58

标签: android asp.net react-native networking fetch

好吧,我的智慧到此为止。

因此,在我的React-Native应用程序中,我正在对网络上托管的ASP.NET Core API进行提取请求。

在我的API中,我已经配置了Conveyor VS Code扩展,并且可以使用以下URL在网络上的任何设备上正常访问API:https://192.168.1.22:45455/api/users/login

但是,当通过Expo运行应用程序时,当尝试从React-Native内部访问该URL时,它始终给我一个网络请求失败错误。

这是实际的提取调用:

const makeHeader = (token) => {
  return {Authorization: 'Bearer ' + token};
}
const authenticate = async (token) => {
  try {
    let res = await fetch(constants.backendUrl + 'users/login', {headers: makeHeader(token)});
    let user = await res.json();
    return user;
  } catch (error) {
    console.error(error);
  }
}

我在获取选项中缺少某些内容吗?

此外,在调用authenticate方法时,它实际上通过了then语句。

authenticateUser = () => {
    AsyncStorage.getItem('token')
      .then(token => {
        authenticate(token)
          .then(user => {
            console.log({user}); // This fires and returns undefined
            this.setState({user})
          })

      });
  }

1 个答案:

答案 0 :(得分:0)

执行以下步骤解决了我的问题:

  • 禁用了Conveyor扩展,因为它没有执行我需要的操作
  • 编辑了Visual Studio项目的applicationhost.config文件并添加了以下几行
<bindings>
      <binding protocol="http" bindingInformation="*:60787:localhost" />
      <binding protocol="https" bindingInformation="*:44378:localhost" />
      <binding protocol="http" bindingInformation="*:60787:192.168.1.22" /> <!-- added this line -->
</bindings>
  • 安装了ngrok,并运行ngrok http 60787 --host-header localhost来转发端口。
  • constants.backendUrl更改为ngrok给我的URL,并确保在https上使用http
  • 以管理员身份打开Visual Studio项目,并运行IIS Express

我知道,对于iOS,您需要在提取调用中使用https,但是我目前正在为Android开发,出于开发目的,这将在部署API之前起作用。我试图使用https,而React-Native由于某种原因不接受证书。