如何发送重复的POST参数

时间:2015-08-29 09:24:50

标签: javascript node.js post request

我正在尝试为我常用的网站编写替代用户界面。我正在使用requestcheerio使用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

我可以修改任何其他值(termsel_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重现该字段

1 个答案:

答案 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('&')
                     });