试图做一个' POST'请求与节点

时间:2014-03-11 20:36:30

标签: node.js http curl https

我正在尝试使用请求或http / https(或其他任何其他内容,如果不可能使用那些2)在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);
    });
}

我想我只是错过了帖子字段(-d)或者上面是完全错误的

1 个答案:

答案 0 :(得分:3)

您需要使用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();