2016-05-15 56 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 
     } 
    } 
    } 
};