1

回答が得られ次第、さらに質問を投稿するかもしれませんが、ここに行きます!

私は現在、私の大学が SAT スコア データを含むファイルを自動的にダウンロードするために使用していた Perl スクリプトのトラブルシューティングを試みています。

アイデアは、特定のアカウントの電子メールを読むことです。サイクル番号 (URL で使用されます) を引き出します。複数の URL をつなぎ合わせる。を使用LWP::UserAgentしてサーバーからファイルを取得し、それらに対して他の Perl マジックを実行します。

私の調査では、手動で URL を入力する (したがって、ユーザーが実行するスクリプトを制限し、サイクル番号を毎回置き換える) ことが実際に機能することがわかりました。

返された応答オブジェクトを調べると、(まず第一に) 失敗した要求に次の行が欠落していることに気付きました。

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

ただし、成功するリクエストには存在します。

失敗したリクエストでこの行が欠落している理由を教えてくれる人がいれば、感謝しますが、それは私が求めていることではありません.

私の質問は、それが拒否された理由を確認するためのさらなる調査に関するものです。

のドキュメントで、LWP::UserAgentこれに気づきました:

LWP が内部的に生成するエラー応答には、"Client-Warning" ヘッダーが値 "Internal response" に設定されます。これらの内部応答をリモート サーバーが実際に生成する応答と区別する必要がある場合は、このヘッダー値をテストする必要があります。

私の質問:実際にそのヘッダー値をどのようにテストしますか? (無知なことをお許しください。私は大学の IT 部門のインターンです)

4

2 に答える 2

2

実際には、さまざまなメッセージをそのヘッダーに配置します。これは、次のように取得できます。

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

このInternal responseメッセージは、ステータスがすでにエラーを示している場合にのみ使用されます。Redirect loop detectedやなどの他のメッセージMissing Authenticate headerは、他のときに使用されます。上記のコードは、単にチェックするのではなく、そこに存在するすべてのメッセージを取得しますInternal response

于 2013-03-07T19:56:53.947 に答える
1

標準的な使用方法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;

何を知る必要がありますか?

于 2013-03-07T20:47:31.690 に答える