Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.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 响应本机获取网络请求失败_Ios_Facebook_Post_React Native - Fatal编程技术网

Ios 响应本机获取网络请求失败

Ios 响应本机获取网络请求失败,ios,facebook,post,react-native,Ios,Facebook,Post,React Native,我正在尝试使用fetch向Facebook Graph API发送GET请求: var url = "https://graph.facebook.com/v2.7/" +FACEBOOK_APP_ID +"?fields=context" +"{friends_using_app{id,name,picture.type(normal)}}" +"&access_token="+_this.props.user.facebook_access_token; fetch(url) .t

我正在尝试使用fetch向Facebook Graph API发送GET请求:

var url = "https://graph.facebook.com/v2.7/"
+FACEBOOK_APP_ID
+"?fields=context"
+"{friends_using_app{id,name,picture.type(normal)}}"
+"&access_token="+_this.props.user.facebook_access_token;

fetch(url)
.then((response) => response.json())
.then((responseJson) => {
  console.log(responseJson);
})
.catch(function(error) {
  console.log(error);
});
但是我在JavaScript控制台中得到了
TypeError:networkrequest失败(…)
这只发生在iOS上,在Android上运行良好。

据我所知,react native上的iOS默认允许HTTPS请求,所以这不需要任何配置

我可以使用
fetch
请求,并且当我打印
url
var并直接粘贴时,我可以在safari中查看上述请求的结果


似乎找不到任何类似的内容,但如果这是重复的,则很抱歉。

可能,重试可能会起作用:

static sendCard(card, account, retries) {
    return (dispatch, getStore) => {          
      if (retries && retries > 1) {
        return;
      }

      fetch(apiUrls.sendCardUrl, {
          method: 'POST',
          headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json',
            'Api-Key': account.token,
          },
          body: JSON.stringify({
            card
          })
        })
        .then(response => {
          // do something
        })
        .catch(err => {
          // retry again!
          retries = retries || 0;
          retries++;
          setTimeout(() => {
            CardActions.sendCard(card, account, retries);
          }, 1000);
        });
    };
  }
将此添加到Info.plist

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key><true/>
</dict>
NSAppTransportSecurity
NSAllowsArbitraryLoads
在这里阅读更多

据我所知,react native上的iOS默认允许HTTPS请求,所以这不需要任何配置

这不太正确。任何旧的https连接都不足以保证应用程序传输安全,因此您可能仍然需要进行一些配置。以下是满足无配置ATS的具体要求:

在完全启用ATS的情况下,应用程序的HTTP连接必须使用HTTPS和 必须满足以下安全要求:

服务器证书必须至少满足以下信任之一 要求:由根证书颁发机构(CA)颁发 证书被合并到由 受信任的根CA,由用户或系统管理员安装 协商的传输层安全版本必须是TLS 1.2 协商TLS连接密码套件必须支持前向保密 (FS)并应为以下情况之一: TLS_ECDHE_ECDSA_与_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_与_AES_128_GCM_SHA256 TLS_ECDHE_ECDSA_与_AES_256_CBC_SHA384 TLS_ECDHE_ECDSA_与_AES_256_CBC_SHA TLS_ECDHE_ECDSA_与_AES_128_CBC_SHA256 TLS_ECDHE_ECDSA_与_AES_128_CBC_SHA TLS_ECDHE_RSA_与_AES_256_GCM_SHA384 TLS_ECDHE_RSA_与_AES_128_GCM_SHA256 TLS_ECDHE_RSA_与_AES_256_CBC_SHA384 TLS_ECDHE_RSA_与_AES_128_CBC_SHA256 TLS_ECDHE_RSA_与_AES_128_CBC_SHA叶服务器证书必须是 使用以下类型的密钥之一签名:Rivest Shamir Adleman (RSA)长度至少为2048位椭圆曲线的密钥 此外,密码(ECC)密钥的大小至少为256位, 叶服务器证书哈希算法必须是安全哈希 算法2(SHA-2),摘要长度至少为256(即, SHA-256或更高)。如果未启用ATS,系统仍将执行 HTTPS服务器信任评估,但您可以在 根据具体情况,如HTTPS服务器信任评估中所述。 在ATS完全启用的情况下,您无法覆盖默认的HTTPS服务器 信任评估

本节所列要求自本节起为最新要求 文件的发布日期,可能有更严格的要求 未来。对这些要求的更改不会破坏应用程序二进制文件 兼容性


我还创建了一个视频教程,介绍如何为react本机应用程序发出网络请求:

我在模拟器中获取时遇到了类似的错误。如果我重做提取,它似乎可以工作。不确定0.31版本中的fetch是否有问题。重做是什么意思?我的意思是重试fetch。您能提供一个代码示例吗?我尝试在
.catch()
方法中重试该请求,但它不起作用。我尝试了此方法,但没有效果,即使在重新启动/重置模拟器和我的计算机后也是如此。