11.5.2 OpenerDirector オブジェクト
OpenerDirector インスタンスは以下のメソッドを持っています:
-
handler は BaseHandler のインスタンスでなければ
なりません。以下のメソッドを使った検索が行われ、URL を取り扱うことが
可能なハンドラの連鎖が追加されます (HTTP エラーは特別扱いされている
ので注意してください)。
- protocol_open() --
ハンドラが protocol の URL を開く方法を知っているかどうかを
調べます。
- http_error_type() --
ハンドラが HTTP エラーコード type の処理方法を知っていることを
示すシグナルです。
- protocol_error() --
ハンドラが (
http
でない) protocol のエラー
を処理する方法を知っていることを示すシグナルです。
- protocol_request() --
ハンドラが protocol リクエストのプリプロセス方法
を知っていることを示すシグナルです。
- protocol_response() --
ハンドラが protocol リクエストのポストプロセス方法
を知っていることを示すシグナルです。
-
与えられた url (リクエストオブジェクトでも文字列でも
かまいません) を開きます。オプションとして data を与えることが
できます。
引数、返り値、および送出される例外は urlopen() と同じ
です (urlopen() の場合、標準でインストールされている
グローバルな OpenerDirector の open() メソッドを
呼び出します) 。
error( |
proto[,
arg[, ...]]) |
-
与えられたプロトコルにおけるエラーを処理します。このメソッドは
与えられたプロトコルにおける登録済みのエラーハンドラを
(プロトコル固有の) 引数で呼び出します。 HTTP プロトコルは特殊な
ケースで、特定のエラーハンドラを選び出すのに HTTP レスポンスコード
を使います; ハンドラクラスの http_error_*() メソッドを
参照してください。
返り値および送出される例外は urlopen() と同じものです。
OpenerDirector オブジェクトは、以下の 3 つのステージに分けて
URL を開きます:
各ステージで OpenerDirector オブジェクトのメソッドがどのような
順で呼び出されるかは、ハンドラインスタンスの並び方で決まります。
- protocol_request() 形式のメソッドを持つ
全てのハンドラに対してそのメソッドを呼び出し、リクエストの
プリプロセスを行います。
- protocol_open() 形式のメソッドを持つ
ハンドラを呼び出し、リクエストを処理します。
このステージは、ハンドラがNone でない値 (すなわち
レスポンス) を返すか、例外 (通常は URLError) を送出した時点で
終了します。例外は伝播 (propagate) できます。
実際には、上のアルゴリズムではまず default_open という名前の
メソッドを呼び出します。このメソッドが全て None を返す場合、
同じアルゴリズムを繰り返して、今度は protocol_open()
形式のメソッドを試します。メソッドが全て None を返すと、
さらに同じアルゴリズムを繰り返して unknown_open() を呼び出します。
これらのメソッドの実装には、親となる OpenerDirector
インスタンスの .open() や.error() といったメソッド
呼び出しが入る場合があるので注意してください。
- protocol_response() 形式のメソッドを持つ
全てのハンドラに対してそのメソッドを呼び出し、リクエストの
ポストプロセスを行います。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。