具有隐藏输入值的卷曲POST表单请求

时间:2011-02-02 06:02:09

标签: curl http-post

我正在尝试使用curl从澳大利亚统计局网页自动请求职业代码。当我使用Curl执行POST请求时,我收到“搜索索引不存在”错误。我认为问题是有两个输入我没有输入,所以它失败了。我将不胜感激任何协助:

卷曲请求:

curl --data "searchcontent=&helpdocid=[docid]&searchtext=121315&submit=Go" http://www.ausstats.abs.gov.au/ausstats/searchclass.nsf/(Searchattmnt)?openagent

ABS网站的相关代码是:

<!-- Start Search Content -->
<div id="titlemain"> Search Results</div><div id="middle"></div>
<form name="attmnt" method="post" action="http://www.ausstats.abs.gov.au/ausstats/searchclass.NSF/(Searchattmnt)?openagent"> 
<input type="hidden" name="searchcontent" value="">
<input type="hidden" name="helpdocid" value="[docid]">
<div id="content">
<h3>New Search :</h3>
<input type="text" name="searchtext" size =60 MAXLENGTH="255" value="">   
<INPUT VALUE="Go" TYPE="submit">
</form>
</div>
<!-- End Search Content --> 

如果有任何其他方法有帮助,请告诉我。如果我不能让它工作,我正在盯着一些严肃的数据录入。

编辑:只是修正卷曲请求中的拼写错误以避免混淆。

3 个答案:

答案 0 :(得分:1)

问题是curl的--data参数完全按照您提供的方式发送文本,但您不是对保留字符进行网址编码(特别是[]字符),因此,服务器无法正确匹配helpdocid字段的值。

在旁注中,请勿在发布的数据中包含“submit = Go”字段。只提交具有名称和值的字段。

试试这个:

curl --data "searchcontent=&helpdocid=%5Bdocid%5D&searchtext=121315" http://www.ausstats.abs.gov.au/ausstats/searchclass.nsf/(Searchattmnt)?openagent

答案 1 :(得分:1)

我在执行请求时使用了@Justin Morgan的建议并运行了wireshark。这给了我所需要的价值。最后,这是我使用的卷曲请求:

curl \
-d "searchcontent=1220.0Data%2BCubes-SuperTable25.06.091" \
-d "helpdocid=17441354B1295875CA2571E6000AE9A0" \
-d "searchtext=121318" \
http://www.ausstats.abs.gov.au/ausstats/searchclass.NSF/(Searchattmnt)?openagent

答案 2 :(得分:0)

Mozilla插件livehttpheader显示用于发布到服务器的urlencoded文本字符串。

相关问题