XMLRPC::Transport::HTTPモジュール (SOAP::Lite v.0.50)(日本語チョー訳)

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)

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.


作者(AUTHOR)

Paul Kulchenko (paulclinger@yahoo.com)


ホーム Perlの小技

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