NodeJS Http发布JSON数据

如何通过NodeJS上的Http Post正确发送JSON数据? 我检查了我发送的数据肯定是JSON,但每次我尝试通过http post发送,它会收到一个错误。 我不能完全看到错误,因为它是从terminal返回,即使我输出,它太乱了,没有正确的格式

var options = { hostname: 'www.postcatcher.in', port: 80, path: '/catchers/5531b7faacde130300002495', method: 'POST', headers: { 'Content-Type': 'application/json', } }; var req = http.request(options, function(res) { console.log('Status: ' + res.statusCode); console.log('Headers: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); res.on('data', function (body) { console.log('Body: ' + body); fs.writeFile("/var/www/node/test.txt", body, function(err) { if(err) { return console.log(err); } console.log("The file was saved!"); }); }); }); req.on('error', function(e) { console.log('problem with request: ' + e.message); }); // write data to request body req.write('{"string": result}'); ///RESULT HERE IS A JSON req.end(); 

也试过这个

 // request.post( // '', // { form: { key: result } }, // function (error, response, body) { // if (!error && response.statusCode == 200) { // console.log(body); // } // } // ); // console.log(result); 

result不被插值。

这似乎工作正常..

 http = require('http'); fs = require('fs'); var options = { hostname: 'www.postcatcher.in', port: 80, path: '/catchers/5531b7faacde130300002495', method: 'POST', headers: { 'Content-Type': 'application/json', } }; var req = http.request(options, function(res) { console.log('Status: ' + res.statusCode); console.log('Headers: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); res.on('data', function (body) { console.log('Body: ' + body); fs.writeFile("test.txt", body, function(err) { if(err) { return console.log(err); } console.log("The file was saved!"); }); }); }); req.on('error', function(e) { console.log('problem with request: ' + e.message); }); // write data to request body // req.write('{"string": result}'); ///RESULT HERE IS A JSON result = '{ "hello": "json" }'; req.write('{"string": '+result+'}'); req.end(); 

结果:

 $ node 29712051.js Status: 201 Headers: {"server":"Cowboy","date":"Sat, 18 Apr 2015 04:23:52 GMT","connection":"keep-alive","x-powered-by":"Express","content-type":"text/plain","content-length":"7","set-cookie":["connect.sid=0eGSTYI2RWf5ZTkpDZ0IumOD.OrcIJ53vFcOiQSdEbWz0ETQ9n50JBnXyZRjrSyFIdwE; path=/; expires=Sat, 18 Apr 2015 08:23:53 GMT; httpOnly"],"x-response-time":"6ms","via":"1.1 vegur"} Body: Created The file was saved! $ cat test.txt Created 

其实,你可以使用JSON.stringify(result)来代替“{”string“:'+ result +'}':

 http = require('http'); fs = require('fs'); var options = { hostname: 'www.postcatcher.in', port: 80, path: '/catchers/5531b7faacde130300002495', method: 'POST', headers: { 'Content-Type': 'application/json', } }; var req = http.request(options, function(res) { console.log('Status: ' + res.statusCode); console.log('Headers: ' + JSON.stringify(res.headers)); res.setEncoding('utf8'); res.on('data', function (body) { console.log('Body: ' + body); fs.writeFile("test.txt", body, function(err) { if(err) { return console.log(err); } console.log("The file was saved!"); }); }); }); req.on('error', function(e) { console.log('problem with request: ' + e.message); }); // write data to request body // req.write('{"string": result}'); ///RESULT HERE IS A JSON // result = JSON.stringify({ hello: "json" }); req.write('{"string": '+result+'}'); // req.end();