2010-10-08 46 views
4
use LWP::Simple; 
use HTML::LinkExtor; 
use Data::Dumper; 
#my $url = shift @ARGV; 
my $content = get('example.com?GET=whateverIwant'); 
my $parser = HTML::LinkExtor->new(); #create LinkExtor object with no callbacks 
$parser->parse($content); #parse content 

现在如果我要发送POST和COOKIE信息以及与HTTP标头我怎么能配置与GET功能可按?还是必须自定义我自己的方法?如何使用Perl的LWP :: Simple发送cookies?

我的主要兴趣是饼干!然后发布!

回答

4

LWP::Simple是非常简单的HTTP GET请求。如果你需要做更复杂的事情(如cookies),你必须升级到完整的LWP::UserAgentcookie_jar是一个HTTP::Cookies对象,您可以使用它的set_cookie方法添加一个cookie。

use LWP::UserAgent; 

my $ua = LWP::UserAgent->new(cookie_jar => {}); # create an empty cookie jar 

$ua->cookie_jar->set_cookie(...); 

my $rsp = $ua->get('example.com?GET=whateverIwant'); 
die $rsp->status_line unless $rsp->is_success; 
my $content = $rsp->decoded_content; 
... 

LWP :: UserAgent还有一个post方法。

+1

但是什么是set_cookie的参数!文档指的是$版本,但没有提供任何细节! http://search.cpan.org/~gaas/HTTP-Cookies-6.01/lib/HTTP/Cookies.pm#METHODS – Chloe 2013-01-14 19:25:44

+0

@Chloe,它期望你熟悉的cookie规范。参见[RFC 2965](https://www.ietf.org/rfc/rfc2965)。 – cjm 2013-01-14 23:56:57

2

您可能需要使用WWW::Mechanize代替。它已经粘在你想要的东西的大部分:

use WWW::Mechanize; 

my $mech = WWW::Mechanize->new(
    cookie_jar => { ... } 
    ); 

$mech->cookie_jar->set_cookie(...); 

$mech->get(...); 

my @links = $mech->links; 
+0

你不需要'cookie_jar => {}'这里,因为WWW ::机械化已经默认为(不像它的基类,LWP :: UserAgent的,除非请求不创建一个cookie_jar)。 – cjm 2010-10-13 07:45:56

+0

嘿,我永远不会记得它走的路。 :) – 2010-10-13 15:47:10

相关问题