当前位置: 首页 > 知识库问答 >
问题:

React Native fetch()在Android 7上抛出“网络请求失败”,但在Android 6上运行良好

子车高歌
2023-03-14

我发现(问题)在Android SDK Platform 23(Android 6)上获取请求成功结束,但在Android SDK Platform 24(Android 7)上我有错误“网络请求失败”:

try {
   let res = await fetch('https://pricesea.ru/api/auth/login', {
     method: 'POST',
     credentials: 'include',
     headers: new Headers({'Accept': 'application/json', 'Content-type': 'application/x-www-form-urlencoded'}),
     body: `username=${this.state.username}&password=${this.state.password}`
   });

   if (res.ok) {
     ...
   }
} catch (e) {
   console.log(e);
}

错误:

TypeError: Network request failed
at XMLHttpRequest.xhr.onerror (fetch.js:441)
at XMLHttpRequest.dispatchEvent (event-target.js:172)
at XMLHttpRequest.setReadyState (XMLHttpRequest.js:546)
at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:381)
at XMLHttpRequest.js:485
at RCTDeviceEventEmitter.emit (EventEmitter.js:181)
at MessageQueue.__callFunction (MessageQueue.js:260)
at MessageQueue.js:101
at MessageQueue.__guard (MessageQueue.js:228)
at MessageQueue.callFunctionReturnFlushedQueue (MessageQueue.js:100)

我使用的是RN 0.46.3。

这可能是什么原因?

编辑:我测试了22到26的API版本,问题仅出在API 24(Android 7.0)上。在其他API版本上,请求成功结束。

编辑2: Github RN问题:https://github.com/facebook/react-native/issues/15100

共有1个答案

姜松
2023-03-14

这是Android 7.0上的一个bug,如本文所述。Vicky Chijwani提出的解决方案:

将您的服务器配置为使用椭圆曲线prime256v1。例如,在Nginx 1.10中,您可以通过设置prime256v1ssl_ecdh_curve做到这一点;

 类似资料:
  • 我正在尝试访问本地计算机上的远程HTTP Api。这个API在邮递员和我本地机器上的Chrome上都工作得很好。但是,当使用Expo React本地Fetch进行Fetch调用时,我会遇到以下错误: 网络请求失败 请帮助我解决这个问题。谢了。

  • 我正在尝试从mocky接收一些简单的json。 反应本机提取函数: 远程调试器出错

  • 我开发了一个React应用程序,它使用Laravel作为API。我已经通过Passport添加了登录,并且已经相当成功地使用了个人访问客户端方法。我可以添加新用户和令牌,我可以撤销令牌,我可以重置密码...所有的API调用(除了登录和注册)都由API中间件保护,它可以工作。如果我从任何这些调用的头中删除,则由于->middleware('auth:api')包装器,它将返回401未经验证。 一切都

  • 我创建了一个JasperReport应用程序,它在tomcat服务器上运行良好。但是当我使用相同的jar在Jboss上运行时,它会显示错误 原因:java.lang.ClassCastException:org.apache.xerces.jaxp.DocumentBuilderFactoryImpl无法强制转换为javax.xml.parsers.DocumentBuilderFactor.ne

  • 下面是我的discord music player bot,我用Maven和Java8编译并安装了它,使用了以下步骤: 下面是我的pom.xml 发送播放音乐的命令后出错... 我曾尝试将此方法改为Cp1252编码,但仍然失败。

  • 尽管CAS服务器在Tomcat下工作得很好,但我有一些问题要使它在WebLogic12c下工作。在Weblogic上部署之前,我遵循以下指南:https://github.com/gentics/gentics-sso-cas/wiki/oracle-weblogic-configuration在webcontent/web-inf/with content中添加文件Weblogic.xml: