我是Perl的新手,我想编写一个Perl程序:
我试过这个:
#!/usr/bin/perl
require HTTP::Request;
require LWP::UserAgent;
$request = HTTP::Request->new(GET => 'http://www.google.com/');
$ua = LWP::UserAgent->new;
$ua->cookie_jar({file => "testcookies.txt",autosave =>1});
$response = $ua->request($request);
if($response->is_success){
print "sucess\n";
print $response->code;
}
else {
print "fail\n";
die $response->code;
}
请告诉我们如何在'request'中设置cookie,即
在发送HTTP :: Request
时如何设置cookie我期待的是:
$request = HTTP::Request->new(GET => 'http://www.google.com/');
$ua = LWP::UserAgent->new;
$ua->new CGI::Cookie(-name=>"myCookie",-value=>"fghij");
这可能吗?
答案 0 :(得分:20)
如上所述,Cookie位于HTTP :: Cookies中:
您需要创建一个cookie jar
您可以设置要放入jar中的Cookie值
然后将该jar与您的用户代理关联
例如:
my $ua = LWP::UserAgent->new;
my $cookies = HTTP::Cookies->new();
$cookies->set_cookie(0,'cookiename', 'value','/','google.com',80,0,0,86400,0);
$ua->cookie_jar($cookies);
# Now make your request
set_cookie
有相当多的参数:
set_cookie($ version,$ key,$ val,$ path,$ domain,$ port, $ path_spec,$ secure,$ maxage,$ discard,\%rest)
这是因为cookie jar是从浏览器(UserAgent)的角度设计的,而不是单个请求。这意味着在这种情况下并非所有参数都如此重要。
你需要做的就是$ key,$ val,$ path,$ domain,$ port。
关于:
500无法连接到www.google.com:80 (错误的主机名'www.google.com')
这意味着LWP无法查找Google的地址。你是一个Web代理的背后?如果是这样,您将需要使用以下内容在UA中设置代理:
$ ua-> proxy(['http','https'],'http://proxyhost.my.domain.com:8080/');
答案 1 :(得分:3)