HTTP::Request
SYNOPSIS ^
require HTTP::Request;
$request = HTTP::Request->new(GET => 'http://www.example.com/');
通常使用为:
and usually used like this:
$ua = LWP::UserAgent->new;
$response = $ua->request($request);
/*****************************
[root@wx03 ~]# perl a21.pl
$VAR1 = bless( {
'_content' => 'this is test from scan',
'_msg' => 'OK',
'_protocol' => 'HTTP/1.1',
'_rc' => '200',
'_request' => bless( {
'_headers' => bless( {
'user-agent' => 'libwww-perl/6.15'
}, 'HTTP::Headers' ),
'_content' => '',
'_uri' => bless( do{(my $o = 'http://120.55.118.6:3000/admin/api/menu')}, 'URI::http' ),
'_method' => 'GET',
'_uri_canonical' => $VAR1->{'_request'}{'_uri'}
}, 'HTTP::Request' ),
'_headers' => bless( {
'date' => 'Mon, 11 Jul 2016 06:09:29 GMT',
'client-date' => 'Mon, 11 Jul 2016 06:09:29 GMT',
'::std_case' => {
'client-peer' => 'Client-Peer',
'client-date' => 'Client-Date',
'client-response-num' => 'Client-Response-Num'
},
'content-length' => '22',
'client-response-num' => 1,
'client-peer' => '120.55.118.6:3000',
'content-type' => 'text/html;charset=UTF-8',
'server' => 'Mojolicious (Perl)'
}, 'HTTP::Headers' )
}, 'HTTP::Response' );
11111111111111111
this is test from scan[root@wx03 ~]#
[root@wx03 ~]# cat a21.pl
use HTTP::Request;
use LWP::UserAgent;
use Data::Dumper;
$request = HTTP::Request->new(GET => 'http://120.55.118.6:3000/admin/api/menu');
$ua = LWP::UserAgent->new;
$response = $ua->request($request);
print Dumper($response);
print "11111111111111111
";
print $response->content;
[root@wx03 ~]# perl a21.pl
$VAR1 = bless( {
'_request' => bless( {
'_uri_canonical' => bless( do{(my $o = 'http://120.55.118.6:3000/admin/api/menu')}, 'URI::http' ),
'_uri' => $VAR1->{'_request'}{'_uri_canonical'},
'_headers' => bless( {
'user-agent' => 'libwww-perl/6.15'
}, 'HTTP::Headers' ),
'_method' => 'GET',
'_content' => ''
}, 'HTTP::Request' ),
'_rc' => '200',
'_content' => 'this is test from scan',
'_protocol' => 'HTTP/1.1',
'_msg' => 'OK',
'_headers' => bless( {
'client-response-num' => 1,
'::std_case' => {
'client-peer' => 'Client-Peer',
'client-response-num' => 'Client-Response-Num',
'client-date' => 'Client-Date'
},
'client-peer' => '120.55.118.6:3000',
'content-length' => '22',
'content-type' => 'text/html;charset=UTF-8',
'client-date' => 'Mon, 11 Jul 2016 06:09:39 GMT',
'server' => 'Mojolicious (Perl)',
'date' => 'Mon, 11 Jul 2016 06:09:39 GMT'
}, 'HTTP::Headers' )
}, 'HTTP::Response' );
11111111111111111
this is test from scan[root@wx03 ~]#
[root@wx03 ~]#
描述:
HTTP::Request 是一个类封装了HTTP 类型请求, 由一个请求行,一些headers和一个内容body组成。
注意 LWP 库使用HTTP协议请求甚至对于非HTTP协议, 这个类的实例是通常传递到一个LWP::UserAgent object.的request() method
require HTTP::Request;
$request = HTTP::Request->new(GET => 'http://www.example.com/');
通常使用为:
and usually used like this:
$ua = LWP::UserAgent->new;
$response = $ua->request($request);
HTTP::Request 是一个 HTTP::Message的子类 因为继承了它的方法, 下面额外的方法是提供的:
$r = HTTP::Request->new( $method, $uri )
$r = HTTP::Request->new( $method, $uri, $header )
$r = HTTP::Request->new( $method, $uri, $header, $content )
构造一个新的 HTTP::Request object 描述一个请求在一个对象 $uri 使用方法$method
$request = HTTP::Request->new(GET => 'http://www.example.com/');
$method 参数必须是一个字符串,
$uri 蚕食可以是一个字符串,或者一个引用到一个URI 对象。
额外的 $header 参数应该是一个引用到一个 HTTP::Headers object 或者一个 键值对的数组引用。
额外的$content参数必须是一个字符串
$r = HTTP::Request->parse( $str )
这个构造一个新的请求对象通过 解析一个给定的字符串
$r->method
$r->method( $val )
这是用于get/set 方法属性,方法应该是一个短的字符串 像 "GET", "HEAD", "PUT" or "POST".
$r->header( $field )
$r->header( $field => $value )
这是用来get/set header 值 它是继承于HTTP::Headers 通过HTTP::Message
$r->content
$r->content( $bytes )
这是用于get/set 内容,它是继承于HTTP::Message base类。
注意 content应该是一个字符串,字符串在perl可以包含字符以外的字节范围。
sub wx_init {
#$login_url ="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=-$now&lang=zh_CN&pass_ticket=$pass_ticket";
my @chatroom_id = ();
#my $response= $browser->post("https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit", [ "r" => "-$now","lang" => "zh_CN","pass_ticket"=>"$pass_ticket"]); #多加了
$login_url ="https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=-$now&lang=zh_CN&pass_ticket=$pass_ticket";
my $post = {
BaseRequest => {
Uin => $wxuin,
Sid => $wxsid,
Skey => $Skey,
DeviceID => $DeviceID,
}
};
use JSON qw(encode_json);
$json_string = encode_json($post);
my $req = HTTP::Request->new(
'POST' => $login_url
);
$req->referer("https://wx.qq.com/?&lang=zh_CN");
$req->content_type('application/json; charset=UTF-8');
#post请求,如果有发送参数,必须要有这句
$req->content("$json_string"); #发送post的参数
my $res = $ua->request($req);
print $res->content(); #获取的是响应正文
};