POST 方法在 react-native 应用程序(Android)中不起作用(Fetch 或 Axios)

Posted

技术标签:

【中文标题】POST 方法在 react-native 应用程序(Android)中不起作用(Fetch 或 Axios)【英文标题】:POST method doesn't work (Fetch or Axios) in a react-native app (Android) 【发布时间】:2019-09-18 22:30:10 【问题描述】:

我正在使用AxiosFetch 执行API CALL 宽度POST 方法,但在android 上发送错误的Content-Type

发送application/json; charset=utf-8而不是application/json

它在 iOS 上运行良好,GET 方法似乎在两个平台上运行良好。

1) 我的应用是使用 Create-React-Native App 创建的,并与 Expo 一起使用

2) 到目前为止我所尝试的:

我阅读了很多主题(github / ***)并进行了一些更改:在标题中,发送另一种内容类型,更改Postman 中接收到的数据等-使用AxiosFetch

示例:'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'

我试过的代码(基本一样)

fetch('URL', 
  method: 'POST',
  headers: 
    'TOKEN': 'TOKEN',
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  ,
  body: JSON.stringify(data),
).then((response) => console.log(response))

axios(
  method: 'post',
  url: LOGIN_API_URL,
  headers: 
    'Content-type': 'application/json',
    'TOKEN': 'MyTestToken',
  ,
  data: data,
).then((response) => console.log(response.data))

我得到的错误:

title: "ERROR", code: "invalid ContentType", description: "Content-Type expeced: application/json, Content-Type received: application/json; charset=utf-8", success: false

我想为两个平台发送正确的content-type: 'application/json':ios 和 android

如果我错过了一些答案,对不起:)

【问题讨论】:

你启用了 react native 调试器吗?也许这会导致错误 不,我禁用了所有功能。我拥有的唯一信息在我的终端中,因为我使用“expo start”运行该应用程序。我用我得到的确切错误更新了我的主题 【参考方案1】:

这看起来像是 axios 方面的错误(请参阅 https://github.com/axios/axios/issues/859 ) 似乎有一个可能的解决方案与是否提供data 参数有关(https://github.com/axios/axios/issues/86):

https://github.com/axios/axios/issues/86#issuecomment-405930811

const config = 
  headers: 
    accept: 'application/json',
  ,
  data: ,
;

我希望这可以为您指明正确的方向。

【讨论】:

以上是关于POST 方法在 react-native 应用程序(Android)中不起作用(Fetch 或 Axios)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 react-native 中创建嵌套的故事书结构?

fetch() 在 react-native (iOS) 上做 GET 而不是 POST

在 react-native 中发送请求标头/授权 axios.post

使用 react-redux 与 react-native 连接时的不变违规

react-native中的网络相关用法.

在 React-Native 移动应用程序中处理数据的最佳方法是啥?