在 nodejs 專案中, 若是需要對外發起使用 application/json 的 http post , 若有中文字, 需要注意計算字串長度的問題. 一般發起的程式碼請參考:
http://tech.pro/tutorial/1091/posting-json-data-with-nodejs
不過該範例是使用英文字, 所以沒有問題, 若是要發起中文字的 json http post, 需要調整計算 Content-Length 的方式, 使用 new Buffer(str).length, 如下:
var obj_json = { name: "王大頭", age: 25 }; var json_string = JSON.stringify(obj_json); var req = http.request({ host: 'host.example.com', port: 80, path: '/upload', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': new Buffer(json_string).length } }, function(res) { res.setEncoding('utf-8'); var responseString = ''; res.on('data', function(data) { responseString += data; }); res.on('end', function() { console.log(responseString); }); }); req.on('error', function(e) { // http post error }); req.write(json_string); req.end();