好吧,我的智慧到此为止。
因此,在我的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})
})
});
}
答案 0 :(得分:0)
执行以下步骤解决了我的问题:
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 http 60787 --host-header localhost
来转发端口。constants.backendUrl
更改为ngrok给我的URL,并确保在https上使用http 我知道,对于iOS,您需要在提取调用中使用https,但是我目前正在为Android开发,出于开发目的,这将在部署API之前起作用。我试图使用https,而React-Native由于某种原因不接受证书。