簡體   English   中英

如何使用LWP :: UserAgent測試HTTP標頭值

[英]How to test an HTTP header value using LWP::UserAgent

當我得到答案時,我可能會發布更多問題,但是這里有!

我目前正在嘗試解決我的大學過去用來自動下載帶有SAT成績數據的文件的Perl腳本。

想法是通過某個帳戶閱讀電子郵件; 拉出循環編號(在URL中使用); 拼湊多個網址; 然后使用LWP::UserAgent從服務器獲取文件並在其上執行其他Perl magick。

在我的調查中,我已經確定手動輸入URL(從而限制用戶運行的腳本,每次更換周期數)實際上是有效的。

在檢查發回的響應對象時,我注意到(首先)失敗的請求中缺少以下行:

'_uri_canonical' => $VAR1->{'_request'}{'_uri'}

但是它存在於成功的請求中。

如果你們中的任何一個人可以告訴我為什么在不成功的請求中缺少這一行你會得到我的謝意,但那不是我所要求的。

我的問題涉及進一步調查,以了解它被拒絕的原因。

LWP::UserAgent的文檔中,我注意到了這一點:

LWP內部生成的錯誤響應將“Client-Warning”標頭設置為值“Internal response”。 如果需要將這些內部響應與遠程服務器實際生成的響應區分開來,則需要測試此標頭值。

我的問題:你如何實際測試該標頭值? (原諒任何無知;我是我大學IT部門的實習生)

它實際上在該標題中放置了各種消息,您可以按如下方式獲取:

if (my $cw = $response->header('Client-Warning')) {
   die("Internal error: $cw\n");
}

僅當狀態已指示錯誤時才使用Internal response消息。 其他消息(例如Redirect loop detectedMissing Authenticate header在其他時間使用。 上面的代碼將獲得那里存在的任何消息,而不僅僅是檢查Internal response

使用LWP的標准方法是這樣的

use strict;
use warnings;

use LWP;

my $ua = LWP::UserAgent->new;

my $resp = $ua->get('http://my.domain.co.uk/');

die $resp->status_line unless $resp->is_success;

my $content = $resp->decoded_content;

你需要了解什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM