0
我想送用變音(äüöß)與GCM文本,但是在發送請求時,我總是得到以下異常:谷歌雲消息:通過JavaScript請求發送UTF-8數據
{"to":"/topics/mytopic","data":{"message":"ö;ä;1471125600000;1471211999999"}}
undefined:1
JSON_PARSING_ERROR: Unexpected token END OF FILE at position 106.
^
SyntaxError: Unexpected token J
at Object.parse (native)
at IncomingMessage.<anonymous> (c:\project\path\gcm.js:43:30)
at IncomingMessage.emit (events.js:129:20)
at _stream_readable.js:908:16
at process._tickCallback (node.js:355:11)
當我發送文本沒有變音符號,everxthing工作正常,我得到了一個結果。
這裏我的JavaScript函數:
exports.sendMessage = function (req, res) {
var topic = req.body.topic;
var message = req.body.message;
var data = JSON.stringify({
"to": "/topics/" + topic,
"data": {
"message": message
}
});
var options = {
host: 'gcm-http.googleapis.com',
path: '/gcm/send',
method: 'POST',
headers: {
'Authorization': 'key=xxx',
'Content-Type': 'application/json; charset=utf-8',
'Content-Length': data.length
}
};
var req2 = http.request(options, function(resp) {
var msg = '';
resp.setEncoding('utf-8');
resp.on('data', function(chunk) {
msg += chunk;
});
resp.on('end', function() {
console.log(JSON.parse(msg));
if(JSON.parse(msg).message_id) {
res.send(200, {msg: "Message sent successfully! Message: " + JSON.parse(msg).message_id});
} else {
res.send(400, {msg: "Message sending failed! Message: " + JSON.stringify(msg)});
}
});
});
req2.write(data);
req2.end();
};
我在做什麼錯?在發送之前是否需要重新編碼message
字符串?
可能有人給一個解釋,爲什麼要與「內容長度」參數的要求適用於包含文本非變音,但不與變音符號的文本? –