我正在尝试为我常用的网站编写替代用户界面。我正在使用request
和cheerio
使用Node.js来编写数据网页。
但是,当我尝试针对此站点发送POST请求时,会出现此问题。我想在这里检索类列表而不首先浏览此页面,但devtools中显示的普通post参数的结构如下:
sel_subj:dummy
bl_online:FALSE
sel_day:dummy
term:201630
sel_subj:ACTG
sel_inst:ANY
sel_online:
sel_crse:
begin_hh:0
begin_mi:0
end_hh:0
end_mi:0
我可以修改任何其他值(term
,sel_crse
等),但sel_subj
没有兼容的值,因此服务器只使用默认值。
我一直在为form
中的request
对象参数尝试不同的值,但这些都没有效果:
sel_subj: ["M", "dummy"]
sel_subj: ["dummy", "M"]
sel_subj: "M"
sel_subj: "dummy,M"
sel_subj: "M,dummy"
sel_subj: "dummy M"
sel_subj: "M dummy"
sel_subj: "dummy, M"
sel_subj: "M, dummy"
我正在尝试弄清楚POST请求中的重复字段意味着什么,服务器期望什么,以及如何使用request
重现该字段
答案 0 :(得分:1)
如果参数名称可以复制,请求体可以由您自己设计:
var headers = {'content-type' : 'application/x-www-form-urlencoded'};
var body = [];
var params = [
{ sel_subj:'dummy' }, // duplicates
{ bl_online:false },
{ sel_day:'dummy' },
{ term:'201630'},
{ sel_subj:'ACTG'}, // duplicates
{ sel_inst:'ANY'},
{ sel_online: null},
{ sel_crse: null},
{ begin_hh:0},
{ begin_mi:0},
{ end_hh:0},
{ end_mi:0}
];
params.forEach( function(p) {
body.push( require('querystring').stringify(p) );
});
var r = request.post({ url:'http://localhost/api/',
headers: headers,
body:body.join('&')
});