【问题标题】:Automating a HTTP POST call自动执行 HTTP POST 调用
【发布时间】:2014-08-21 05:11:48
【问题描述】:

我一直在寻找一个月 - 大约 30 天:/ - 试图解决这个问题。没有任何更新可以解决我的问题。

我有一个外部(由其他人制作)网站,其中包含资金信息。正文包括一个 form 和一些 select 元素和一个 input 按钮元素,都在 <table> <tr> <td> 部门内,如下例所示。

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

...
<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 URLREAD 和 URLREAD2、CURL 等,以处理 GET 和 POST 调用,但我无法完成这项工作。

在浏览器中,通过放置:

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

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

谁能帮助我理解如何实现自动化?提前致谢。

【问题讨论】:

  • 试过 cURL 吗? curl -X POST -d "year1=2014&amp;month1=08&amp;day1=21" "http://www.example.com/function.php?fund=f1"
  • 浏览器中的URL不起作用的原因是它会发出GET请求。看到表单通过 POST 提交,我会说服务器寻找 $_POST 参数
  • 它什么也没做。我检查了隐藏元素或其他东西,但似乎有些东西我不明白。这里可以用简单的post,还是有别的?

标签: php html http post get


【解决方案1】:

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

最后正确的 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2018-12-03
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多