如何打印正在设置的cookie / cookie_jar的值?
试:
##my $cookie_jar=HTTP::Cookies->new(file => "cookie.jar",autosave=>1,ignore_discard=>1); my $cookie_jar=HTTP::Cookies->new(); ## Would like it to be in memory my $agent = WWW::Mechanize->new(cookie_jar => $cookie_jar); ##my $agent = WWW::Mechanize->new(); ##my $agent = WWW::Mechanize->new(autocheck => 1); ##$agent->cookie_jar( {} ); # we need cookies ##$agent->cookie_jar(HTTP::Cookies->new); print "Set Cookie Jar?\n"; print $agent->cookie_jar->as_string(); print "\n"; $agent->get($url); // url is a https site
这些都没有太多运气,我做错了什么?
解决方法
好吧,你必须在饼干罐里放一些饼干才能看到输出中的任何饼干.到目前为止,你有一个空饼干罐.确保您添加一些cookie或您正在访问的站点设置它们:
use HTTP::Cookies; use WWW::Mechanize; my $cookie_jar = HTTP::Cookies->new; my $agent = WWW::Mechanize->new( cookie_jar => $cookie_jar ); $cookie_jar->set_cookie( qw( 3 cat buster / .example.com 0 0 0 ) ); $agent->get( 'http://www.amazon.com' ); print "Set Cookie Jar?\n",$agent->cookie_jar->as_string,"\n";
这给了我输出:
Set Cookie Jar? Set-Cookie3: session-id=000-0000000-0000000; path="/"; domain=.amazon.com; path_spec; discard; version=0 Set-Cookie3: session-id-time=1272524400l; path="/"; domain=.amazon.com; path_spec; discard; version=0 Set-Cookie3: cat=buster; path="/"; domain=.example.com; port=0; version=3
但是,您不需要直接调用HTTP :: Cookies. LWP将负责这一点.你只需给cookie_jar一个哈希引用:
my $agent = WWW::Mechanize->new( cookie_jar => {} );
如果您只想要来自特定响应的cookie,您可以创建一个单独的cookie jar来保存从响应中提取的cookie:
use WWW::Mechanize; my $agent = WWW::Mechanize->new( cookie_jar => {} ); my $response = $agent->get( 'http://www.amazon.com' ); my $cookie_jar = HTTP::Cookies->new; $cookie_jar->extract_cookies( $response ); print $cookie_jar->as_string;