by Hippo2000(2001/5/23)
XMLRPC::Transport::HTTPのPODなのです。
なおこのドキュメントはCPAN-Searchで出てきたドキュメント(PODを変換したもの)を日本語に訳そうとしたものです。わかりにくい部分は本物を見てください。(^^;;
原本の著作権はPaul Kulchenko さんがお持ちです。
Paul Kulchenko さんにはメールで了解をいただきました。なお内容等が間違っていたら修正します。ご連絡ください。
XMLRPC::Transport::HTTP - XMLRPC::Liteのためのサーバー/クライアント側 HTTPサポート
use XMLRPC::Lite
proxy => 'http://localhost/',
# proxy => 'http://localhost/cgi-bin/xmlrpc.cgi', # ローカルのCGIサーバー
# proxy => 'http://localhost/', # ローカルのデーモン・サーバー
# proxy => 'http://login:password@localhost/cgi-bin/xmlrpc.cgi', # 認証付のローカルなCGIサーバー
;
print getStateName(1);
CGIサーバー
use XMLRPC::Transport::HTTP;
my $server = XMLRPC::Transport::HTTP::CGI
-> dispatch_to('methodName')
-> handle
;
デーモン・サーバー
use XMLRPC::Transport::HTTP;
my $daemon = XMLRPC::Transport::HTTP::Daemon
-> new (LocalPort => 80)
-> dispatch_to('methodName')
;
print "Contact to XMLRPC server at ", $daemon->url, "\n";
$daemon->handle;
このクラスは、それが設置されるウェブ・サーバーがなんであるかからは独立している、XMLRPCサーバーのためのすべてのHTTP関連のロジックをカプセル化します。このクラスを使いたければ、上記のの簡単なガイドラインにしたがわなければなりません。
LWP::UserAgentモジュールで使うすべてのプロキシー設定を使うことができます:
XMLRPC::Lite->proxy('http://endpoint.server/',
proxy => ['http' => 'http://my.proxy.server']);
もしくは
$xmlrpc->transport->proxy('http' => 'http://my.proxy.server');
これは、あなたのためのプロキシー・サーバーを指定します。もしプロキシーの認証のために、HTTP_proxy_userとHTTP_poxy_passを使っていれば、SOAP::Liteはそれをどのように適切に扱うかを知っておかなければなりません。
use HTTP::Cookies;
my $cookies = HTTP::Cookies->new(ignore_discard => 1);
# セッションの間、保ちたければ'file'を追加することもできます。
my $xmlrpc = XMLRPC::Lite->proxy('http://localhost/');
$xmlrpc->transport->cookie_jar($cookies);
クッキーはレスポンスから取得され、リクエストのために提供されます。HTTP::Cookiesインターフェースで他のクッキーを追加すること(もしくは応答の後に必要とするものを取り出すこと)が常にできます。
以下のように1行で行うこともできます。
$xmlrpc->proxy('http://localhost/',
cookie_jar => HTTP::Cookies->new(ignore_discard => 1));
XMLRPC::Liteは回線上(HTTP転送のみ)での圧縮を可能とするオプションを提供しています。サーバーとクライアントの双方でこの機能をサポートしていなければなりません、しかしロジックはアプリーケーションにとってまったく透過的です。もしクライアントがそれを受信することができ(クライアントは'deflate'または'*'の値でAccept-Encodingを送信します)、クライアントがフォールバック・ロジックを持っていれば、サーバーはエンコードされたメッセージだけで返答します。そのためサーバーが指定されたエンコーディング(Content-Encoding: deflate)を理解できず、適切なエラーコード(415 NOT ACCEPTABLE)を返せば、クライアントはエンコードされていない同じリクエストを繰り返し、このサーバーをセッションごとのキャッシュに格納します。そのためそこへの他のすべてのリクエストはエンコードなしにおこなわれます。
クライアント側とサーバー側で、圧縮のための閾値を設定させるオプションを有効すると、クライアントとサーバー側の両方で安全にこの機能を有効にすることができます。
圧縮はクライアント側で有効になります。もし:閾値が設定され、かつ現在のメッセージの大きさが閾値より大きく、かつモジュールCompress::Zlibが利用可能であれば。クライアントはもし閾値が指定され、かつompress::Zlibが利用可能であれば、値'deflate'を持ったヘッダ''Accept-Encoding' を送信します。
サーバーはCompress::Zlibが利用可能であれば、圧縮されたメッセージを受け取ります。そして以下の場合にのみ圧縮されたメッセージで応答します:閾値がしていされ、かつ現在のメッセージの大きさが閾値よりも大きく、かつモジュールCompress::Zlibが利用可能で、リクエストにヘッダ'Accept-Encoding'があれば。
Crypt::SSLeay HTTPS/SSLのために HTTP::Daemon XMLRPC::Transport::HTTP::Daemonのために Apache, Apache::Constants XMLRPC::Transport::HTTP::Apacheのために
実装の詳細については ::CGI, ::Daemon そして ::Apache をご覧ください。 例については examples/XMLRPC/* をご覧ください。
Copyright (C) 2000-2001 Paul Kulchenko. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Paul Kulchenko (paulclinger@yahoo.com)
ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。