2016-05-15 52 views
0

無法找到我的req對象有什麼問題。嘗試在回叫中發送推送通知時出現此錯誤。試圖使用jslint.com鏈接我的請求數據,沒有錯。爲了這個,一直在撓頭!使用離子推送的請求正文中的json無效

{ 「鏈接」:空, 「消息」: 「無效JSON在請求體對於空 JSON,通過 '{}'。」, 「類型」: 「UnprocessableEntity」}

我的代碼如下:

var title = req.body.title, 
    message = req.body.message; 

// Define relevant info 
var ionic_api_token = 'eyJ0eXAiOTdGb-xQVQaD2sV7qTh7XNKCnwiJKV1QiLJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2MjiNC03YjE5LTQ3MzMtYjJhMy0zM2Y3MjBkYzU4MjcifQ.s3e6pCwlVUBAs8kvbO'; 
var device_tokens = ['d44pDarVamnNJS2cNJ2modyBxjZZxcHLlnhQN4wZkJdbgkOw96rq9EEv2WCA5MKU6do0pJoO5rsmQsBAecFt4OIFB0hhD4Dp2K-uMbjum828j-8LKtpCTtGoIDBUvYI6L']; 
var ionic_security_profile = 'main'; 

// Build the request object 
var req = { 
    method: 'POST', 
    url: 'https://api.ionic.io/push/notifications', 
    headers: { 
    'Content-Type': 'application/json', 
    'Authorization': 'Bearer ' + ionic_api_token 
    }, 
    data: { 
    "tokens": device_tokens, 
    "profile": ionic_security_profile, 
    "notification": { 
     "title": title, 
     "message": message, 
     "android": { 
     "title": title, 
     "message": message 
     }, 
     "ios": { 
     "title": title, 
     "message": message 
     } 
    } 
    } 
}; 

function callback(error, response, body) { 
    console.log(body) 
} 

request(req, callback); 

}); 
+0

是否與響應有關?你能從你的網絡控制檯分享響應json嗎? –

+0

@Nannakuhtum我已經分享了。這裏是完整的迴應:'{「meta」:{「status」:422,「version」:「2.0.0-beta.0」,「request_id」:「28ac473b-ea54-4e7a-bd69-」},錯誤「:{」link「:null,」message「:」請求正文中的JSON無效。對於空JSON,傳遞'{}'。「,」type「:」UnprocessableEntity「}} ' –

+0

escape'title' '信息'。我也加了一個答案.. –

回答

0

,可能會導致問題的唯一的事情是標題&消息對象(可能是字符串)。請嘗試轉義它,如下所示

function escapeJson(json) { 
    return JSON.parse(JSON.stringify(json)); 
} 

title = escapeJson(title); 
message = escapeJson(message); 

var req = { 
    method: 'POST', 
    url: 'https://api.ionic.io/push/notifications', 
    headers: { 
    'Content-Type': 'application/json', 
    'Authorization': 'Bearer ' + ionic_api_token 
    }, 
    data: { 
    "tokens": device_tokens, 
    "profile": ionic_security_profile, 
    "notification": { 
     "title": title, 
     "message": message, 
     "android": { 
     "title": title, 
     "message": message 
     }, 
     "ios": { 
     "title": title, 
     "message": message 
     } 
    } 
    } 
};