Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用.fetch函数使API调用在react native中与IPV6兼容?_Ios_React Native_Fetch_Ipv6 - Fatal编程技术网

Ios 如何使用.fetch函数使API调用在react native中与IPV6兼容?

Ios 如何使用.fetch函数使API调用在react native中与IPV6兼容?,ios,react-native,fetch,ipv6,Ios,React Native,Fetch,Ipv6,我开发了一个应用程序(用于IOS),它是用react native编写的,在IPV4网络中运行良好。然而,最近苹果发出一条消息说,我的应用程序在IPV6网络中测试时无法工作。他们告诉我,我必须使其与仅限IPV6的网络兼容 问题是,如何使现有的API调用与IPV6网络兼容 我的API使用https协议,它是通过域名而不是原始IP调用的 我使用的示例获取调用是: fetch(query,{ method: 'post', headers: Utils.fetchHeaders

我开发了一个应用程序(用于IOS),它是用react native编写的,在IPV4网络中运行良好。然而,最近苹果发出一条消息说,我的应用程序在IPV6网络中测试时无法工作。他们告诉我,我必须使其与仅限IPV6的网络兼容

问题是,如何使现有的API调用与IPV6网络兼容

我的API使用https协议,它是通过域名而不是原始IP调用的

我使用的示例获取调用是:

fetch(query,{
      method: 'post',
      headers: Utils.fetchHeaders('post')
      })
      .then(Utils.checkStatus)
      .then(Utils.parseJSON)
      .then(json => this._handleResponse(json))
      .catch(error => {

         this.setState({
          votingError: 'Sorry, there was an error!',
          loading: false
       });

      });
API端点的格式如下:


感谢您的帮助。

获取API在内部使用已支持IPv6的
NSURLSession

大多数应用不需要任何更改,因为NSURLSession和CFNetwork API已经支持IPv6

资料来源:

由于您没有在fetchapi中使用IPv4地址,所以应该可以使用

所以我怀疑还有其他东西(可能是第三方代码?)不配合这个。 苹果有没有向你提供更多的细节,说明哪些东西不起作用


我建议您按照我的建议进行测试,找出错误之处。

我的端点(数字海洋水滴)似乎不接受来自IPV6网络的连接。虽然我的域被分配了IPV6 IP。水滴似乎存在网络问题。我正在与digital ocean对话以解决这个问题。好的,我想我通过在我的服务器上启用IPV6支持来解决了这个问题,但是我不明白为什么我必须进行这样的修改。为什么我不能从仅限IPV6的网络中连接到IPV4服务器?有什么想法吗?我也怀疑FetchAPI在内部使用NSURLSession。因为为什么默认情况下它不能工作呢?在苹果方面查看我的应用程序的家伙说,当他切换到ipv4网络时,该应用程序可以工作,但在仅ipv6的网络中不工作。也许他们的网络没有将IPV4 IP转换为IPV6,或者fetch实际上没有使用NSURLSessionSee。如果你不确信的话,你可以自己添加一个断点。好了,现在我想我明白发生了什么。起初,我的域名被分配了一条AAAA记录,指向我的服务器。但是,服务器本身未配置IPV6网络。我想苹果的审查员解决了AAAA记录,并试图连接到我的服务器,直到我昨天设置好服务器后,服务器才能够处理IPv6请求。我想,如果我没有添加AAAA记录,苹果在连接我的服务器时就不会有问题,因为从IPv4到IPv6的转换是必要的。