请求模块使用Cookies的POST JSON请求

时间:2017-11-02 20:11:20

标签: json node.js post request

当我使用curl命令或Postman时,我在1秒内得到正确的响应,但请求模块大部分时间都会进入超时状态,请帮忙。 我想我需要为-c cookie.txt -b cookie.txt'

添加代码
curl https://example.com/cmd -H "Content-Type:application/json" -k -d '{"cmd":{"dlpktenc":{"id":0,"byte0":001,"byte1":532}}} -c cookie.txt -b cookie.txt'

请求模块:

var request = require('request');
request = request.defaults({jar: true});
request(
    { method: 'POST',
     uri: 'https://example.com/login',
     form:
       {  user: username, 
          password: password
        },
      rejectUnauthorized: false,

    },
    function( err, res, body ){
if (!err){
    console.log(JSON.parse(body));
    var requestData = {"cmd":{"dlpktenc":{"id":0,"byte0":001,"byte1":532}}};
    request(
    { method: 'POST',
     uri: 'https://example.com/cmd',
    header:{
    'content-type': 'application/json',
    },
     json: requestData,
     rejectUnauthorized: false
},
    function( err, res, body ){
if (!err){
    console.log(body);

} else console.log(err);
}); 
} else console.log(err);
});

2 个答案:

答案 0 :(得分:0)

在cURL中,-d表示(from the man pages, emphasis mine):

  

-d, - data

     

(HTTP)将POST请求中的指定数据发送到HTTP服务器,   与用户填写HTML时浏览器的操作方式相同   表单并按下提交按钮。 这将导致卷曲通过   使用content-type将数据发送到服务器   application / x-www-form-urlencoded。比较-F, - form。

     

...

     

另请参阅--data-binary和--data-urlencode以及--data-raw。 :此   选项覆盖-F, - form和-I, - head和--upload。

如果curl正在使用你说的命令,你需要以同样的方式发送你的请求:

request({
        method: 'POST',
        uri: 'https://example.com/cmd',
        header: {
            // Correct content type
            'content-type': 'x-www-form-urlencoded',
        },
        body: requestData,
        rejectUnauthorized: false
    },
    function(err, res, body) {
        if (!err) {
            console.log(body);
        } else console.log(err);
    }
);

答案 1 :(得分:0)

将请求模块中的主体作为对象发送时出现问题,除非将json选项设置为true

var requestData = {
    "cmd": {
        "dlpktenc": {
            "id": 0,
            "byte0": 001,
            "byte1": 532
        }
    }
};


request({
        method: 'POST',
        url: 'http://localhost:9007/mbe',
        header: {
            'content-type': 'application/json',
        },
         body: requestData,
        rejectUnauthorized: false,
       //THE NEXT LINE WAS MISSING IN YOUR CODE
        json : true 
    },
    function(err, res, body) {
        if (!err) {
            console.log(body);
        } else console.log(err);
    }
);