尝试使用节点发出'POST'请求

我正在尝试使用请求或HTTP / HTTPS(或任何其他的,如果它不可能与这两个)node.js中执行以下cUrl请求,

curl -k -3 -X POST https://somedomain.com/rest/ \ -H "customeHeader: customeHeader" \ // customer header -d '{ "email" : "foo@bar.com", "password" : "yourpassword" }' // data to post. 

这是我到目前为止:

 var options = { "hostname": "https://somedomain.com/rest/", "method": 'POST', "headers" : { "customeHeader" : "customeHeader" }, "secureProtocol" : "SSLv3_method", "rejectUnauthorized" : false }; var req = https.request(options, function(res) { res.on('data', function(d) { console.log(d); //process.stdout.write(d); }); }); req.end(); req.on('error', function(e) { console.error(e); }); } 

我想我只是错过了Post域(-d),或者是上面完全错误的

您需要使用req.write编写您的POST正文:

 req.write(JSON.stringify(someObj)); 

还要将Content-Type标头设置为application/json

这是一个完整的例子:

 var request = require('https').request, parseUrl = require('url').parse; var options = parseUrl('https://somedomain.com/rest'); options.method = 'POST'; options.headers = { 'Content-Type': 'application/json' }; var req = request(options, function (res) { res.on('data', function (d) { console.log(d.toString()); }); }); req.write(JSON.stringify({a: 1, b: 2})); req.end();