亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1569 | 回復(fù): 0
打印 上一主題 下一主題

Perl使用技巧19:使用get和post請求數(shù)據(jù) [復(fù)制鏈接]

論壇徽章:
2
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-12-18 06:20:00每日論壇發(fā)貼之星
日期:2015-12-18 06:20:00
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-12-15 14:19 |只看該作者 |倒序瀏覽
Perl使用技巧19:使用get和post請求數(shù)據(jù)

最常用的3個模塊:
use HTTP::Request::Common;                                #GET POST
use LWP::Simple;                                                #get getstore mirror
use LWP::UserAgent;

常用的2個Useragent:
$iphone = "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53";
$chrome= "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.132 Safari/537.36";

-----------
大體來說:
LWP::UserAgent是用來組裝瀏覽器信息的。
     LWP::Simple是一個簡化的模塊

HTTP::Request 是用來組裝請求信息的。
     HTTP::Request::Common是一個簡化的模塊

HTTP::Headers是用來組裝頭部信息的。
     如果用簡化模塊的話,這個模塊可以不用。

-----------
一般GET的時候最簡單,不需要改變頭部信息,最簡單的方法是這樣:

$url="baidu.com";
$get=get($url);
say $get;
注意請?zhí)鎿Q為http的網(wǎng)址,我發(fā)不了連接。

get是LWP::Simple中的方法,一次獲得內(nèi)容。

-----------
$res=$ua->get($url);
$get=$res->content;
say $get;

這樣也可以,這個get是ua的方法。

-----------
獲取網(wǎng)絡(luò)請求到文件,這個是LWP::Simple中的方法:

$file="/tmp/get.txt";
getstore($url,$file);

-----------
LWP::UserAgent中關(guān)于post的方法是這樣的:

$ua->post( $url, \%form )
$ua->post( $url, \@form )
$ua->post( $url, \%form, $field_name => $value, ... )
$ua->post( $url, $field_name => $value,... Content => \%form )
$ua->post( $url, $field_name => $value,... Content => \@form )
$ua->post( $url, $field_name => $value,... Content => $content )

簡單的時候還算好用,如果想仔細(xì)檢查頭部信息的話,就不如分步來提交了,方便調(diào)試。

-----------

sub mypost {
        my ($url,$content,$header)=@_;
        my $ua=new LWP::UserAgent;
       
        my $req;
        if ($content) {
                if ($header) {
                        $req=POST($url,%$header,Content=>$content);
                }else{
                        $req=POST($url,$content);
                }
        }else{
                $req=GET($url);
        }
        # say Dumper($req)
        my $res=$ua->request($req);
        my $get=$res->content;
        $get=decode_utf8($get);
        return $get;
}

header可以提前準(zhǔn)備好:

my %header=(
        'Content_Type' => 'multipart/form-data'
);

content也可以提前準(zhǔn)備好:
my %content=(
        "api_key"=>$FACE_key,
        "api_secret"=>$FACE_secret,
        "attribute"=>"none"
);

請求的時候,只送上URL就可以get。
送上URL和content就可以post。
如果還需要改header,就再送上頭部信息。

my $get=mypost($FACE_base,\%content,\%header);

----------------
say Dumper($req);

類似這個樣子:

$VAR1 = bless( {
                 '_content' => '',
                 '_uri' => bless( do{\(my $o = 'baidu.com')}, 'URI::http' ),
                 '_headers' => bless( {}, 'HTTP::Headers' ),
                 '_method' => 'GET'
               }, 'HTTP::Request' );

對于需要設(shè)置頭部的網(wǎng)絡(luò)請求,最好是Dumper出來看看對不對,否則設(shè)置錯誤是不會請求成功的。

---------------
如果需要設(shè)置瀏覽器信息頭,類似這個樣子:

sub myget {
        my ($url,$proxy,$mobile)=@_;
        my $ua=new LWP::UserAgent;

        #不需代理可以注釋
        if ($proxy) {$ua->proxy(['http','https'],$proxy);}

        #不需手機訪問可以注釋
        if ($mobile) {
                $ua->agent($iphone);
        }else{
                $ua->agent($chrome);
        }

        #不需cookie可以注釋
        $ua->cookie_jar(HTTP::Cookies->new(file =>$file_cookie,autosave => 1, ignore_discard => 1));

        #不需SSL可以注釋
        $ua->ssl_opts(verify_hostname=>0);
        $ua->timeout(4);


        my $req=GET($url);
        my $res=$ua->request($req);
        my $get=$res->content;
        return $get;
}

----------------
如果post的時候要上傳一個文件,類似這樣:

$content{"img"}=[undef,"img.jpg",Header=>"application/octet-stream",Content=>$img];

其實這篇文章講的不好,需要多多測試,才能弄清楚網(wǎng)絡(luò)請求這一大堆概念。如果熟練的話,可以編寫出自己的myget & mypost,以后就方便多了。

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP