perl http模块总结

perl发送http请求主要有 LWP,UserAgent, HTTP这些模块及其子模块组成
 
1.发送简单的http请求
只需要使用LWP::Simple模块即可
use LWP::Simple;
$content = get(url);  #返回得到的内容

getstore(url, filename);#将目标url的内容保存到filename中
head($url);   返回5个响应头($content_type, $document_length, $modified_time, $expires, $server)
 
这个模块的方法只能做一些基本的http请求操作,比如只能发送get请求,获取不到响应的详细信息
 
2.发送通用的http请求
这里用到3个主要的类
LWP::UserAgent,   HTTP::Request,  HTTP::Response,
需要注意的是 后面2个类继承HTTP::Headers和 HTTP::Message,  HTTP::Headers 提供了添加请求头,获取响应头的方法。 HTTP::Message提供了content方法,对于request对象,如果request是post请求,则该方法会设置http的请求内容; 对于response对象该方法会返回http响应的内容
 
标准的请求过程
$response = $ua->request($request);
 
在执行此方法之前可以对request对象进行设置, 方法执行完后
可以从response对象中获取内容,响应头等
 
UserAgent可以设置一些s全局选项, 比如timeout,max_redirect
 
下面是一个完整的例子
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
 
$ua = LWP::UserAgent->new(timeout=>180);
$request = HTTP::Request->new('POST'=>"http://mysite.com?name=john");
$request ->content_type('application/x-www-form-urlencoded');#post 必须有这句
$request->content('age=18');#post 请求参数
$request->header('Accept-Language', 'zh-CN,zh;q=0.8');
$response = $ua->request($request);
print $response->content();
print $response->status_line();
print $response->header('Content-Type');
 
 
总结:
通过使用 LWP::UserAgent,   HTTP::Request,  HTTP::Response, 这三个类可以满足发起大多数http请求,
还有一些类用于更方便的发送请求。
 

 

你可能感兴趣的:(http,perl,lwp)