自动执行HTTP POST调用


Automating a HTTP POST call

我一直在寻找一个月-大约30天:/-试图解决这个问题。最新的东西都不能解决我的问题。

我有一个外部(由他人制作)网站,有资金信息。主体包括一个form和一些select元素,以及一个input按钮元素,它们都在<table> <tr> <td>中,如下例所示。

当按下button1按钮时,最后一个表<tr>部分更新Funds Information部分,这是该表单的目的:通过选择单个日期显示基金的每日值。

...
<form name="funds" method="post" action="function.php?fund=f1">
    <table>
        <tr>
            <td>
                <select name="year1" size="1" class="class1">
                    <option label="2014" value="2014" >2014</option>
                    ...
                </select>
                <select name="month1" size="1" class="class1">
                    <option label="Jan" value="01" >Jan</option>
                    ...
                </select>
               <select name="day1" size="1" class="class1" >
                   <option label="01" value="01" >01</option>
                   ...
               </select>
               <input type="submit" value="Submit" name="button1" class="class1" >
          </td>
        </tr>
        <tr>
            ...
            Funds Information
            ...
        </tr>
    </table>
</form> 
...

我有一些自动化功能-即Matlab URLREADURLREAD2, CURL等-为了处理GETPOST调用,但我无法使此工作。

在浏览器中,通过放置:
http://www.example.com/function.php?fund1=f1&year1=2014&month1=08&day1=21

没有显示。同样的事情也会通过其他方式发生。

谁能帮助我了解如何自动化这个?

谢谢Phil....你说出了问题的关键!

最后,正确的POST调用,例如使用cURL,如下:

curl -X POST -d "year1=2014&month1=08&day1=21&btn=Submit" "http://www.example.com/function.php?fund=f1" -o data.html

在给定的设置中实现POST方法的正确语法,并获得data.html文件中资金的正确数据。

通过使用像Nirsoft SmartSniff这样的嗅探器-考虑到所有这些无痛的过程,我完全推荐-可以很容易地检测POST调用参数,如下所示:

POST function.php?fund=f1 HTTP/1.1
Host: www.example.com
Connection: keep-alive
Content-Length: 39
Cache-Control: max-age=0
Accept: ...text/html info...
Origin: http://www.example.com
User-Agent: ...browser info...
Content-Type: application/x-www-form-urlencoded
Referer: http://www.example.com/function.php?fund=f1
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,es;q=0.6
Cookie: ...cookie data...
year1=2014&month1=08&day1=04&btn=Submit

请注意,Content-Length号是参数对短语的长度,最重要的是,参数对位于底部。

还要注意,所有这些表元素对post调用没有任何影响。

最后,在URLREAD下,调用如下:

url='http://www.example.com/function.php?fund=f1';
urlstring={'year1','2014','month1','08','day1','17','btn','Submit'};
data=urlread(url,'post',urlstring);

并获取data变量上的正确数据。

最诚挚的问候,

hypfco