LWP::Protocol

Hippo2000 (2000/7/28)

LWP::Protocolモジュールなのです。

作者はGisle Aasさんです。メールで許可をいただきました。


目次


名前

LWP::Protocol - LWPプロトコルの基本クラス


概要

 package LWP::Protocol::foo;
 require LWP::Protocol;
 @ISA=qw(LWP::Protocol);

説明

このクラスはLWPライブラリによりサポートされるすべてのプロトコル実装のための基本クラスとして使われます。

LWP::Protocol::create($url)を使ってこのクラスのインスタンスを作成すると、そのアクセス方法にて記述した、初期化されたサブクラスを取得します。いいかえれば、LWP::Protocol::create() はそのサブクラスの1つのためのコンストラクタを呼び出します。

LPW::Protocolから派生したすべてのクラスは、リクエストをサービスするために使われるrequest()メソッドをオーバーライドする必要があります。オーバーライドされたメソッドは、それが受信したときにデータのチャンクをまとめるためにcollect関数を使うことが出来ます。

以下の関数が提供されます:

$prot = LWP::Protocol->new()
LWP::Protocol コンストラクタはサブクラスにより継承されます。これは仮想基本クラスなので、このメソッドは直接呼ばれるべきではありません
$prot = LWP::Protocol::create($url)
与えられた機能を取り扱うプロトコルを実装しているクラスのオブジェクトを作成します。これは関数であり、メソッドではありません。これはコンストラクタというより、オブジェクト工場です。これはユーザー・エージェントがプロトコルにアクセスするために使うべき関数です。
$class = LWP::Protocol::implementor($scheme, [$class])
スキームのための実装クラスを取得/設定します。指定されたスキームがサポートされていなければ、''を返します。
$prot->request(...)
 $response = $protocol->request($request, $proxy, undef);
 $response = $protocol->request($request, $proxy, '/tmp/sss');
 $response = $protocol->request($request, $proxy, \&callback, 1024);

プロトコルにリクエストを発行し、レスポンス・オブジェクトを返します。このメソッドはサブクラスでオーバーライドされる必要があります。引数の説明についてはLWP::UserAgentを参照してください。

$prot->timeout($seconds)
タイムアウト値を秒単位で取得/設定します。
$prot->parse_head($yesno)
HTMLドキュメントの<head>からレスポンス・ヘッダを初期化するべきかどうか。
$prot->collect($arg, $response, $collector)
リクエストの内容を集め、スカラやファイルへの格納、もしくはコールバックの呼び出しによって適切に処理するために使われます。$argが未定義であれば、内容は$responseに格納されます。$argが単なるスカラであれば、$argはファイル名と解釈され、内容はこのファイルに書きこまれます。$argがルーチンへのリファレンスであれば、内容はこの関数に渡されます。

$collectoerは呼ばれるルーチンです。そしてそれは処理する内容のカケラを(スカラへのリファレンスとして)返すことに責任を持ちます。$collectorは空文字列へのリファレンスを返すことでEOFを知らせます。

collect()からの戻り値は$responseオブジェクト・リファレンスです。

注意:$response->is_success()であったときだけ、コールバックやファイル引数を使います。これによりリダイレクトのためのコンテント・データと混乱をまねくであろうコールバックへの認証レスポンスを送信することを避けています。

$prot->collect_once($arg, $response, $content)
レスポンス・コンテントの全体が$contentとして利用できるときに呼ばれます。これは最初に$contentへのリファレンスを返すcollectorコールバックで、次は空文字列でcollect()を呼び出します。

参考資料

使用例として LWP/Protocol/file.pmLWP/Protocol/http.pm ファイルをご覧下さい。


著作権(COPYRIGHT)

Copyright 1995-2000 Gisle Aas.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


ホーム Perlの小技 LWP

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。