反应原生安卓获取网络请求错误


好吧,我在这里结束了

我的智慧。

因此,在我的 React-Native 应用程序中,我正在向托管在我的网络上的 ASP.NET Core API 发出获取请求。

在我的 API 中,我已经配置了传送带 VS 代码扩展,并且可以使用以下 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})
          })
      });
  }

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

  • 禁用了传送带扩展,因为它没有执行我需要它执行的操作
  • 编辑了Visual Studio Project的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 Project,并运行IIS Express

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

相关内容

  • 没有找到相关文章

最新更新