0

私はこのようなコードを持っています

my $ua = new LWP::UserAgent;
$ua->timeout($timeout);
$ua->agent($useragent);
$response = $ua->post($domain,['login_name'=>$login,'login_password'=> $password])->as_string;

ページの内容が大きすぎて、受信できません。投稿データを送信してヘッダーのみを取得するには?

4

2 に答える 2

1

私はこれがあなたのためにそれをするべきだと思います。

my $ua = LWP::UserAgent->new();
$ua->timeout($timeout);
$ua->agent($useragent);
my $response = $ua->post( 
    $domain,
    [ 'login_name' => $login, 'login_password' => $password ] 
);

use Data::Dumper;

print Dumper( $response->headers() );
print $response->request()->content(), "\n";
于 2012-12-03T14:25:02.457 に答える
1

login_name最初に、これをHEAD 経由で渡すことができるかどうかを確認しますlogin_password(URL 文字列内: domain/?login_name=...&login_password=...)。これが機能しない場合は、悪いケースです。

HEAD の動作で POST を使用することはできません。LWP は完全な応答を待ちます。

とにかくPOSTを使用すると、サーバーはコンテンツを送信しますが、ソケットtcpを使用してすべてのコンテンツを自分で受信することを避けることができます:gethostbynameconnectsysreadこの後、ソケットを取得/\r?\n\r?\n/して閉じるまで。いずれにせよいくらかのトラフィックが使用されますが、メモリを節約して時間を受信できます。

ソケットでこれを行うのは通常のことではありませんが、高負荷/ビッグデータがある場合は、そのような混乱よりも良い方法はありません。

于 2012-12-03T17:33:52.547 に答える