如何使用Perl发送带有cookie的HTTP请求?

如何使用Perl发送带有cookie的HTTP请求?,perl,Perl,我是Perl新手,我想编写一个Perl程序: 创建HTTP请求 将其发送到任何URL(例如) 在请求中包含cookie 将http响应代码记录在文件中 我试过这个: #!/usr/bin/perl require HTTP::Request; require LWP::UserAgent; $request = HTTP::Request->new(GET => 'http://www.google.com/'); $ua = LWP::UserAgent->ne

我是Perl新手,我想编写一个Perl程序:

  • 创建HTTP请求
  • 将其发送到任何URL(例如)
  • 在请求中包含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;
}
请告知如何在“请求”ie中设置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");

这是可能的吗?

从和开始,正如HTTP::cookies中提到的cookies:

  • 你需要创建一个饼干罐

  • 设置要放入罐子中的cookies的值

  • 然后将该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\u cookie
有大量参数:

设置cookie($version、$key、$val、$path、$domain、$port、, $path\u spec、$secure、$maxage、$discard、\%rest)

这是因为CookieJAR是从浏览器(用户代理)的角度设计的,而不是从单个请求的角度设计的。这意味着在这种情况下并非所有的论点都如此重要

需要正确处理的是$key、$val、$path、$domain、$port

关于:

500无法连接到www.google.com:80 (错误的主机名“www.google.com”)

这意味着LWP无法为Google查找地址。您是否支持web代理?如果是这样,您也需要在UA中使用以下方法设置代理:

$request = HTTP::Request->new(GET => 'http://www.google.com/');
$ua = LWP::UserAgent->new;
$ua->new CGI::Cookie(-name=>"myCookie",-value=>"fghij");

$ua->proxy(['http','https'],'')

你自己试过吗?你被什么卡住了?我也不确定Putty/finesse与您的问题有什么关系。Cookies存储在客户端。也许你想发送cookie值,但不想发送cookie本身。+1
请告诉我如何在“请求”中设置cookie
是一条我以前从未见过的错误消息——甚至在Perl中也没有:)@Jørn Schou Rode:oops!忘了添加“错误消息”他们的..无论如何都解决了问题已编辑。LWP::UserAgent显示HTTP响应我想要带有set Cookie的简单HTTP请求您希望如何在不查看响应的情况下记录状态代码?我不知道,无论如何,谢谢。。。那么“将http响应代码记录到一个文件中”呢@dexter:简单的方法是:打开一个文件并将响应代码打印到其中。强大的方法:使用Log4perl()。使用David的链接编辑,$cookies->set_cookie(0、'cookiename'、'value'、'/'、'google.com',80,0,086400,0);你能详细解释一下吗?在set_cookie上增加了详细信息-更多信息请查看HTTP::cookie手册页或维基百科的HTTP cookie页。