fetch被重定向到自定义url方案并失败

时间:2017-09-21 14:24:12

标签: ios http react-native

我有一个本机项目,我通过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('&')
    });

1 个答案:

答案 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));