我有一个本机项目,我通过fetch()向一个页面发送一个http请求,该页面将我重定向到一个url方案,如appname:// data = 123456。
我需要从位置网址中提取这些数据,然后继续向api发送其他请求。问题是ios有这个问题。 Android正确地选择它并且它没有问题,但是在ios上我得到了一个"网络请求失败"结果
经过一些较长时间的调试后,我发现本机后面的实现发现了一个错误,表明"不支持的URL"。
有没有办法让这项工作?我正在尝试使用自定义URL方案启动应用程序,现在appname://写入safari启动我的应用程序,但它对请求没有任何影响。
我用于请求的代码:OAUTH2_IS_URL是https://login.server.com和action / api / login
const postData = {username, password};
return fetch(BuildConfig.OAUTH2_IS_URL + action, {
method: 'POST',
credentials: 'same-origin',
mode: 'same-origin',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: Object.keys(postData).map(key => key + "=" +
encodeURIComponent(postData[key])).join('&')
});
答案 0 :(得分:1)
我从您的问题中了解到,您尝试使用来自fetch
请求的网址打开应用。
如果是这种情况,您应该使用react-native的Linking API。您可以使用canOpenURL()
测试该网址是否受支持,然后使用openURL()
Linking.canOpenURL(url).then(supported => {
if (!supported) {
console.log('Can\'t handle url: ' + url);
} else {
return Linking.openURL(url);
}
}).catch(err => console.error('An error occurred', err));