我正在尝试使用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
方法,但不会调用它。
有点失落,不确定如何继续。
提前致谢!
答案 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?