2016-08-20 74 views
3

我試圖用取發送POST請求OneSignal REST API:反應本地取「不支持BodyInit型」

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 

我試圖把一個catch方法上取,但它不會被調用。

有點遺憾,不確定如何繼續。

在此先感謝!

回答

0

你試過把你的json改成下面的那個嗎?

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

甚至嘗試過更簡單的json?

1

即使我嘗試了用於創建通知的One-Signal 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); 
    });