React Native fetch“不支持的BodyInit类型”

时间:2016-08-20 16:01:57

标签: post react-native onesignal

我正在尝试使用fetch:

向OneSignal REST API发送POST请求
var obj = {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    'app_id': '(API KEY)',
    'contents': {"en": "English Message"},
    'app_ids': ["APP IDS"],
    'data': {'foo': 'bar'}
  })
}

fetch('https://onesignal.com/api/v1/notifications', obj)

我知道你不应该把你的API密钥放在客户端代码中,但这只是一个测试,看看它是否可行。此外,我得到的错误并非来自服务器的错误响应,它是:

Possible Unhandled Promise Rejection (id: 0):
unsupported BodyInit type

我尝试在fetch上添加catch方法,但不会调用它。

有点失落,不确定如何继续。

提前致谢!

2 个答案:

答案 0 :(得分:2)

即使我尝试使用单信号REST API的相同POST请求来创建通知,下面对我也很好。

const bodyObj = {
  app_id: "**********",
  included_segments: ["All"],
  data: {"foo": "bar"},
  contents: {"en": "Hi good morning"}
 }

  fetch('https://onesignal.com/api/v1/notifications',{
    method:'POST',
    headers:{
    'Authorization':'Basic **********',
    'Content-Type':'application/json'
   },
     body:JSON.stringify(bodyObj)
 })
   .then((response) => response.json())
   .then((responseJson) => {
    console.log("success api call");
  })
  .catch((error) => {
      console.error(error);
  }); 

答案 1 :(得分:1)

您是否尝试将json更改为以下版本?

JSON.stringify({
  app_id: '(API KEY)',
  contents: {en: "English Message"},
  app_ids: ["APP IDS"],
  data: {foo: 'bar'}
})

甚至尝试过更简单的json?