Android中的反应原生POST请求通过https返回网络错误

时间:2016-07-03 14:56:08

标签: android post https react-native axios

尝试通过使用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

3 个答案:

答案 0 :(得分:3)

我遇到了与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',
}

答案 1 :(得分:1)

与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

答案 2 :(得分:0)

我猜您的AndroidManifest.xml文件中没有互联网权限。

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

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