HTTP::Response

Hippo2000 (2000/7/28)

HTTP::Responseモジュールなのです。

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


目次


名前

HTTP::Response - HTTPレスポンスをカプセル化するクラス


概要

 require HTTP::Response;

説明

HTTP::ResponseクラスはHTTP形式のレスポンスをカプセル化します。レスポンスはレスポンス行、いくつかのヘッダ、そして(潜在的には空の)内容で構成されます。LWPライブラリはHTTPプロトコルでないスキームにも、HTTP形式のレスポンスを使っていることに注意してください。

このクラスおインスタンスは通常、LWP::UserAgentオブジェクトのrequestメソッドによって作成され、返されます:

 #...
 $response = $ua->request($request)
 if ($response->is_success) {
     print $response->content;
 } else {
     print $response->error_as_HTML;
 }

HTTP::ResponseはHTTP::Messageのサブクラスで、このためそのメソッドを継承しています。よく使われる継承されたメソッドはheader()、push_header()、remove_header()、headers_as_string()そしてcontent()です。ヘッダの便利なメソッドも利用できます。詳細はHTTP::Messageをご覧下さい。

以下の追加のメソッドが利用できます:

$r = HTTP::Response->new($rc, [$msg, [$header, [$content]]])
応答コード$rcで、オプションのメッセージ$msgを記述する、新しいHTTP::Responseオブジェクトを組みたてます。メッセージは短く、人が読める、応答コードを説明する1行の文字列です。
$r->code([$code])
 
$r->message([$message])
 
$r->request([$request])
 
$r->previous([$previousResponse])
これらのメソッドはオブジェクト属性へのパブリックなアクセスを提供します。最初の2つには、それぞれ応答コードとレスポンスのメッセージが入ります。

request属性はこのレスポンスを発生したリクエストへのリファレンスです。これは$ua->request()メソッドに渡されたものと同じリクエストである必要はありません。というのもその間にリダイレクトや認証のリトライがあったかもしれないからです。

previous属性はレスポンスのチェーンをたどるために使われます。最初のレスポンスがリダイレトクまたは認証されていなければ、レスポンスのチェーンを取得します。

$r->status_line
文字列"<code><message>"を返します。もしそのmessage属性が設定されていなければ、<code>の公的名前(HTTP::Statusを参照)に置き換えられます。
$r->base
このレスポンスの基本URLを返します。戻り値はURIオブジェクトへのリファレンスになります。

基本URLは以下のいずれかの情報源から(この優先順で)取得されます:

  1. ドキュメント内容に埋め込まれたもの:例えばHTMLドキュメント内での<BASE HREF="...">
  2. レスポンスでの"Content-Base:"または"Content-Locatin:"ヘッダ
    古いHTTP実装との互換性のため、"Base:"ヘッダも探します。
  3. このレスポンスを要求したURL。これは$ua->request()メソッドに渡された、元のURLでないかもしれません。というのもレスポンスの前に、いくつかのリダイレクトを受信しているかもしれないからです。

LWPプロトコル・モジュールがHTTP::Responseオブジェクトを作成すると、ドキュメントに埋め込まれたなんらかの基本URL(step 1)が、"Content-Base;"ヘッダを初期化しているでしょう。つまりこのメソッドは残り2つのステップだけを行います。(どちらも内容は常に使えるわけではありません)

$r->as_string
レスポンスのテキストによる表現を返します。主にデバッグのために使われます。引数は取りません。
$r->is_info
 
$r->is_success
 
$r->is_redirect
 
$r->is_error
これらのメソッドはレスポンスが情報的(informational)であるか、成功したか、リダイレクトであるか、エラーであるかを示します。
$r->error_as_HTML()
何のエラーが発生したかを示す完全なHTMLドキュメントが入っている文字列を返します。このメソッドは$r->is_errorがTRUEのときだけ呼ばれるべきです。
$r->current_age
<draft-ietf-http-v11-spec-07> section 13.2.3.によって指定されたレスポンスの"現在の年齢"("current age")を計算します。レスポンスの年齢は元のサーバサーバーによって送信されてからの時間です。返される値は、年齢を秒で表した数字です。
$r->freshness_lifetime
<draft-ietf-http-v11-spec-07> section 13.2.4.で指定されたそのレスポンスの"新鮮期間"("freshness lifetime")を計算します。"新鮮期間"はレスポンスが生成されてから終了するまでの時間の長さです。返される値は秒で"新鮮期間"を表した数字です。

もし"Expires"または"Cache-Control"ヘッダがレスポンスに入っていなければ、適切な期間を決めるため、この関数は'Last-Modified'をベースに単純な自分で発見する方法を適用します。

$r->is_fresh
freshness_lifetime()とcurrent_age()の値をベースに、レスポンスが新鮮であればTRUEを返します。レスポンスがもはや新鮮でなければ、もう一度取り出されるか、元のサーバによって再評価されるべきです。
$r->fresh_until
このエンティティがもはや新鮮ではない時刻を返します。

著作権(COPYRIGHT)

Copyright 1995-1997 Gisle Aas.

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


ホーム Perlの小技 HTTP

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