如何使用Perl发送和HTTP请求与cookie?

前端之家收集整理的这篇文章主要介绍了如何使用Perl发送和HTTP请求与cookie?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Perl的新手,我想写一个Perl程序:

>创建HTTP请求
>发送到任何URL(例如http://www.google.com)
>在请求中包含一个cookie
>将http响应代码记录在文件

我试过这个:

#!/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;
}

请告诉如何在“请求”中设置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");

这可能吗??

解决方法

如上所述,Cookie位于HTTP :: Cookie中:

>你需要创建一个cookie jar
>设置要放在jar中的cookie的值
>然后将该jar与您的用户代理相关联

例如:

my $ua = LWP::UserAgent->new;
my $cookies = HTTP::Cookies->new();
$cookies->set_cookie(0,'cookiename','value','/','google.com',80,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,$port.

关于:

500 Can’t connect to www.google.com:80
(Bad hostname ‘www.google.com’)

这意味着LWP无法查找Google的地址.你在网页代理后面吗?如果是这样,您需要在UA中设置您的代理,方法如下:

$ua-> proxy([‘http’,’https’],’http://proxyhost.my.domain.com:8080/‘);

猜你在找的Perl相关文章