2011-04-20 193 views
2

我在通过Perl获取表单结果时遇到了一些困难。我相信我已经成功地找到了表单并将我想要的值提交给适当的字段,但我不确定如何将响应对象转化为有用的东西(如果我将其打印出来,则显示如下)。解析HTTP:响应对象

HTTP::Request=HASH(0x895b8ac)

下面是相关代码(假设$网址是正确的)


    my $ua = LWP::UserAgent->new; 
    my $responce = $ua->get($url); 
    my @form = HTML::Form->parse($responce); 
    my $chosen = $form[0]; 
    $chosen->value('netid', $user); 
    my $ro = $chosen->click('Search'); 

我能做些什么使$ RO有用吗?

谢谢!

回答

2

要在点击引用HTML::Form docs

点击的结果是,如果你想获得服务器的响应,可以被传递到LWP::UserAgentHTTP::Request对象。

所以,你可以这样做:

my $ua = LWP::UserAgent->new; 
my $response = $ua->get($url); 
my @form = HTML::Form->parse($response); 
my $chosen = $form[0]; 
$chosen->value('netid', $user); 
my $ro = $chosen->click('Search'); 

# If you want to see what you're sending to the server: 
print $ro->as_string; 

# Fetch the server's response: 
$response = $ua->request($ro); 

$response下一步操作取决于你想做什么。

P.S. “响应”通常拼写为无C,但HTTP确实有拼写错误的历史记录。 (我正在看你,“Referer”)。

+0

好吧,当我运行该代码时,我得到“不能使用HTTP :: Request对象作为URI”。我正试图从提交表格 – 2011-04-20 04:32:49

+0

@Ross中得到结果,对不起,错误的方法。当你已经有一个请求对象时,你使用'request'。 – cjm 2011-04-20 04:35:07

+0

啊好的。谢谢!这工作。有没有办法获得结果中的字段列表? – 2011-04-20 04:39:09