当我使用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);
});
答案 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);
}
);