android中的React-native POST请求通过https返回网络错误

Posted

技术标签:

【中文标题】android中的React-native POST请求通过https返回网络错误【英文标题】:React-native POST request in android over https return network error 【发布时间】:2016-11-05 09:16:15 【问题描述】:

尝试在带有 axios 的 react-native 下通过 https POST 请求创建用户帐户,而它在 android 上总是失败并出现“网络错误”。

axios('https://'+DEST_URI, 
 method: 'post',
 data: account,
 headers: 
   'Accept': 'application/json',
 
 then(...)

相同的 https POST 请求在 iOS 上运行良好。

更改为 http,同样的 POST 请求也适用于 android。

还尝试在android上通过https进行GET请求,它可以按预期从后端服务器检索数据。

你知道吗?

链接图像是控制台日志的输出, output from console log

【问题讨论】:

您使用的是 Android 设备,如果是,您是否使用 localhost 作为 URI 的一部分? 相信您可以轻松回复我的问题:***.com/q/48223906/949003谢谢 【参考方案1】:

我在使用 android 'POST' 请求时遇到了同样的问题。原来是链接中提到的标题问题:https://github.com/facebook/react-native/issues/5222#issuecomment-170239302

添加以下标题为我解决了这个问题

headers = 
'Accept': 'application/json',
'Authorization': 'Bearer ' + this.authToken,
'Content-Type': 'application/x-www-form-urlencoded',

【讨论】:

您提到的链接与我的不同。在我的情况下没有标头问题,并且相同的 POST 请求通过 HTTP 工作。它只是不适用于 HTTPS 的 android。 您能在此处发布您的代码以及有关网络错误的更多详细信息吗? @JohnWei,你找到解决方案了吗?我看到与您完全相同的问题.. 通过 HTTP 可以正常工作,但在 android 上不能通过 HTTPS 您好 Ben,我将 RN 升级到 0.31 版后问题消失了【参考方案2】:

与 react-native 存储库上的问题 Upgrade to OkHttp3 相关。

从导致问题的代理中停用 http2。 您可以尝试升级到 react-native v0.27,他们在更改日志中提到他们解决了这个问题,但对我来说没有用。

我必须禁用 ngnix 中的 http2 功能才能使其正常工作。

禁用 http2 真的很简单,只需将您的 ngnix 配置文件中的这一行更改为:

listen 443 ssl http2;

listen 443 ssl;

然后重新加载您的配置:

service nginx reload

更多关于http2和ngnix的信息可以在here找到

【讨论】:

我使用 react-native v0.28。感谢您的回答,因为这听起来与我遇到的问题最相关。您能否详细分享如何停用http2,您能否分享一些有关它的示例代码? 您需要在代理/负载平衡中禁用它。就我而言,我使用 ngnix。我会更新我的答案并添加一些参考。 谢谢卢卡斯!刚刚知道ngnix是一个Web服务器。所以解决方法是在后端 Web 服务器禁用 http2,不是吗? 没错。这是因为 react-native 使用的库在 NGNIX 的某些版本中存在错误(至少它是唯一显示此行为的网络服务器/代理) 虽然我使用 Stamplay 作为后端,我不确定它是否使用 NGNIX/http2,但我想将您的答案标记为对这个问题最有帮助,看看它是否可以用更高版本的 react-native 解决。【参考方案3】:

我猜你的 AndroidManifest.xml 文件中没有 Internet 权限。

请将此行添加到您的 AndroidManifest.xml 文件中:

<uses-permission android:name="android.permission.INTERNET" />

【讨论】:

对于 RN 应用,INTERNET 权限默认包含在 AndroidManifest.xml 文件中,所以不是这样。

以上是关于android中的React-native POST请求通过https返回网络错误的主要内容,如果未能解决你的问题,请参考以下文章

Android模拟器中的React-Native Runnable错误

Android react-native 中的 MainActivity 不存在错误

关于Webstorm运行react-native中的Android项目出错的解决办法

在react-native中,我如何在ios和android的图像上添加水印

React-Native:如何缩放字体大小以支持 Android 和 iOS 中的许多不同分辨率和屏幕?

react-native中的import com.android.build.OutputFile错误