我的智慧。
因此,在我的 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 不接受该证书。