我们的客户设置简单。
页面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的来源
答案 0 :(得分:1)
首先,我建议查看WWW::Mechanize这是一个更友好的LWP包装器。其次,如果您的HTTP客户端出现500错误,那么Web服务器错误日志中应该有更有意义的内容。最后,正如Matthew所提到的,您需要仔细检查浏览器发送的请求,并弄清楚它与您的Perl程序发送的请求有何不同。
答案 1 :(得分:0)
队 这已经解决了。 它最终证明问题不是标题,而是我发送的键值对。页面B没有在字段上进行验证,而是直接将它们插入查询中。
我不得不尝试一些强力组合(通过测试页面A)来获得B页的预期内容。
感谢所有自愿提供帮助的人。