使用PERL自动提交表单 - 调试!

时间:2010-11-29 12:44:26

标签: html perl

我们的客户设置简单。

页面A有一个提交到页面B的表单,显示查询结果。不幸的是,没有其他API或数据库访问来获取数据。

由于我们经常需要执行此查询,因此我们决定使用Perl自动执行此提交。

我已经使用嗅探器确定了页面A的表单键值对并复制了代码。但是,在运行程序页面时,B会抛出HTTP 500错误而没有其他有意义的解释。

任何调试此代码的指针?代码本身很简单:

use strict;
  use warnings;
  use LWP;
  my $browser = LWP::UserAgent->new;

  my $url = "targeturl.asp"
  my $response = $browser->post( $url,
    [
    "HisSort" => "1", 
    "RTsort" => "", 
    "chkHisRun" => "on", 
    "chkRTRun" => "on", 
    "optAdHoc" => "on", 
    "optHist" => "", 
    "optServer" => "servername", 
    "optStatus" => "", 
    "optWhat" => "H", 
    "txtEnd" => "", 
    "txtFields" => "1,0,10,17,11,18,24,19,21,25,1", 
    "txtHEnd" => "11/3/2010", 
    "txtHStart" => "11/1/2010", 
    "txtServer" => "", 
    "txtStart" => "",
    ]
  );

注意: 我无权访问页面A或页面B的来源

2 个答案:

答案 0 :(得分:1)

首先,我建议查看WWW::Mechanize这是一个更友好的LWP包装器。其次,如果您的HTTP客户端出现500错误,那么Web服务器错误日志中应该有更有意义的内容。最后,正如Matthew所提到的,您需要仔细检查浏览器发送的请求,并弄清楚它与您的Perl程序发送的请求有何不同。

答案 1 :(得分:0)

队 这已经解决了。 它最终证明问题不是标题,而是我发送的键值对。页面B没有在字段上进行验证,而是直接将它们插入查询中。

我不得不尝试一些强力组合(通过测试页面A)来获得B页的预期内容。

感谢所有自愿提供帮助的人。