自动化HTTP POST调用

时间:2014-08-21 05:11:48

标签: php html http post get

我一直在寻找一个月 - 大约30天:/ - 试图解决这个问题。没有什么是最新的解决我的问题。

我有一个外部(由他人制作)网站,有资金信息。正文包含formselect个元素和input按钮元素,所有这些都位于<table> <tr> <td>个分区内,如下例所示

当按下<tr>按钮时,最后一个表button1分部之一会更新基金信息部分,这是表单的目的:显示每日值资金,选择单一日期。

...
<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> 
...

我有一些自动化功能-e.e. Matlab URLREADURLREAD2CURL等等,以便处理 GET POST 来电,但我无法制作这项工作。

在浏览器中,放置:

http://www.example.com/function.php?fund1=f1&year1=2014&month1=08&day1=21

没有显示任何内容。同样的事情通过其他方式发生。

任何能帮助我了解如何实现自动化的人?提前谢谢。

1 个答案:

答案 0 :(得分:0)

谢谢菲尔......你给出了问题的关键!...

最后,正确的 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数字是参数对短语的长度,最重要的是,参数对位于底部。

另请注意,所有这些表元素都不会影响后调用。

最后,在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