Perl: 如何用LWP::UserAgent发起一个自定义HTTP::Headers的请求 2010-12-26 @ TECH
首先,参考ActivePerl User Guide的几个HTTP类和子类。
HTTP::Headers、HTTP::Cookies、HTTP::Request、HTTP::Response、HTTP::Status。
HTTP::Headers官方示例
require HTTP::Headers; $h = HTTP::Headers->new; #设置一个HTTP头 $h->header('Content-Type' => 'text/plain'); #读取一个HTTP头的值 $ct = $h->header('Content-Type'); #删除一个HTTP头的值 $h->remove_header('Content-Type');
HTTP::Request官方示例
#独立HTTP::Request方式 require HTTP::Request; $request = HTTP::Request->new(GET => "URL"); #LWP::UserAgent方式 $ua = LWP::UserAgent->new; $response = $ua->request($request);
HTTP::Cookies官方示例
#制定cookies存储位置并自动保存 use HTTP::Cookies; $cookie_jar = HTTP::Cookies->new(file => "$ENV{'HOME'}/lwp_cookies.dat", autosave => 1); #新建一个HTTP::UserAgent并绑定cookies设置 use LWP; $ua = LWP::UserAgent->new; $ua->cookie_jar($cookie_jar); #为HTTP::Request添加Cookies头 $cookie_jar->add_cookie_header( $request )
下面参考一个实例:
use LWP::UserAgent; ####G(URL,UserAgent,Refer) 返回HTTP::Response#### sub G{ #第一步:新建LWP::UserAgent对象 $useragent = LWP::UserAgent->new(); #第二步:自定义一个HTTP::Header结构的哈希 @header = ("Accept" => "*/*", "Referer" => "Refer参数", "Accept-Language" => "en-us", "User-Agent" => "UserAgent参数", "Connection" => "Close" ); #第三步:新建HTTP::Request对象 $request = HTTP::Request->new(GET=>"URL参数"); #第四步:给HTTP::Request对象添加自定义的HTTP::Header对象 $request->header(@header); #第五步:取得返回值(HTTP::Reponse对象)并作为返回值 $response = $useragent->request($request); }
如何提取Cookies
$cookie_jar = HTTP::Cookies->new(); #参考上例 $cookie_jar->extract_cookies("HTTP::Response对象");
关于HTTP 302、404等
use HTTP::Status qw(:constants :is status_message); if ($rc != HTTP_OK) {print status_message($rc), "\n";} if (is_success($rc)) { ... } if (is_error($rc)) { ... } if (is_redirect($rc)) { ... }
更多资料请参考Perl安装目录下ActivePerl User Guide手册。
暂无评论