Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
jp:popfilemodules:xmlrpc [2007/01/24 09:44] amatubujp:popfilemodules:xmlrpc [2009/09/06 15:38] – Fixed sample codes amatubu
Line 27: Line 27:
   * XMLRPC.pm は POPFile がインストールされたディレクトリの UI ディレクトリにインストールしなければいけません。これは CVS の [[http://cvs.sourceforge.net/viewcvs.py/*checkout*/popfile/engine/UI/XMLRPC.pm| ここ]] から入手することができます。このファイルを、XMLRPC.pm というファイル名で保存してください。このモジュールを認識させるためには、POPFile を再起動しなければいけません。   * XMLRPC.pm は POPFile がインストールされたディレクトリの UI ディレクトリにインストールしなければいけません。これは CVS の [[http://cvs.sourceforge.net/viewcvs.py/*checkout*/popfile/engine/UI/XMLRPC.pm| ここ]] から入手することができます。このファイルを、XMLRPC.pm というファイル名で保存してください。このモジュールを認識させるためには、POPFile を再起動しなければいけません。
  
-  * XML-RPC の機能を使用するためには XMLRPC::Lite を含んでいる SOAP::Lite がインストールされている必要があります。SOAP::Lite モジュールは、[[http://search.cpan.org| CPAN]] で入手することができます。Activestate Perl を使用している場合は ppm からインストールすることができます。例えば、<code> +  * XML-RPC の機能を使用するためには XMLRPC::Lite を含んでいる SOAP::Lite がインストールされている必要があります。SOAP::Lite モジュールは、[[http://search.cpan.org| CPAN]] で入手することができます。Activestate Perl を使用している場合は ppm からインストールすることができます。例えば、 
-<code>   ppm +<code> 
-   >install SOAP-Lite</code> +   ppm 
-</code>とします。+   >install SOAP-Lite 
 +</code> 
 +とします。
  
 ===== サンプルコード ===== ===== サンプルコード =====
 +
  
 ==== 簡単な例 ==== ==== 簡単な例 ====
 === Perl の例 1 === === Perl の例 1 ===
-<code> +<code perl
-<code>use strict;+use strict;
 use XMLRPC::Lite; use XMLRPC::Lite;
  
Line 49: Line 52:
  
 XMLRPC::Lite ->proxy('http://localhost:8081/RPC2') XMLRPC::Lite ->proxy('http://localhost:8081/RPC2')
-      -> call('POPFile/API.release_session_key',$sk);</code>+      -> call('POPFile/API.release_session_key',$sk);
 </code> </code>
 上記のソースを testxml.pl というファイル名で保存し、正しく設定されたシステムでテスト用のメッセージ 'spam.txt' に対して実行すれば、次のような結果が出力されるでしょう: 上記のソースを testxml.pl というファイル名で保存し、正しく設定されたシステムでテスト用のメッセージ 'spam.txt' に対して実行すれば、次のような結果が出力されるでしょう:
 <code> <code>
-<code>   perl testxml.pl +   perl testxml.pl 
-   spam</code>+   spam
 </code> </code>
  
 === Python の例 1 === === Python の例 1 ===
-<code> +<code python
-<code>from xmlrpclib import ServerProxy+from xmlrpclib import ServerProxy
 POPFile = ServerProxy("http://localhost:8081") POPFile = ServerProxy("http://localhost:8081")
 pf = POPFile.POPFile.API # naming shortcut to make things easier pf = POPFile.POPFile.API # naming shortcut to make things easier
 key = pf.get_session_key("admin","") key = pf.get_session_key("admin","")
 print pf.classify(key, "spam.txt") print pf.classify(key, "spam.txt")
-pf.release_session_key(key)</code>+pf.release_session_key(key)
 </code> </code>
 上記のソースを testxml.py というファイル名で保存し、正しく設定されたシステムでテスト用のメッセージ 'spam.txt' に対して実行すれば、次のような結果が出力されるでしょう: 上記のソースを testxml.py というファイル名で保存し、正しく設定されたシステムでテスト用のメッセージ 'spam.txt' に対して実行すれば、次のような結果が出力されるでしょう:
 <code> <code>
-<code>   python testxml.py +   python testxml.py 
-   spam</code>+   spam
 </code> </code>
  
 === Delphi の例 === === Delphi の例 ===
-<code> +<code delphi
-<code>program popdelphi;+program popdelphi;
 {$APPTYPE CONSOLE} {$APPTYPE CONSOLE}
  
Line 114: Line 117:
   caller.Free;   caller.Free;
   func.Free;   func.Free;
-end.</code>+end.
 </code> </code>
  
Line 121: Line 124:
 上記のソースを保存し、コンパイルすれば、**popdelphi.exe** ができるでしょう。これを DOS 窓で実行し、メッセージのファイル名を引数として渡し、正しく設定されたシステムを使用していれば、次のような結果が出力されるでしょう: 上記のソースを保存し、コンパイルすれば、**popdelphi.exe** ができるでしょう。これを DOS 窓で実行し、メッセージのファイル名を引数として渡し、正しく設定されたシステムを使用していれば、次のような結果が出力されるでしょう:
 <code> <code>
-<code>   popdelphi popfile99.msg +   popdelphi popfile99.msg 
-   spam</code>+   spam
 </code> </code>
  
 === NSBasic/CE for Windows CE Example === === NSBasic/CE for Windows CE Example ===
-<code> +<code nsbasic
-<code> AddObject "PocketXMLRPC.Factory","xmlrpc"+ AddObject "PocketXMLRPC.Factory","xmlrpc"
  Set popfile = xmlrpc.proxy("http://192.168.200.1:8081/RPC2","POPFile/API.")  Set popfile = xmlrpc.proxy("http://192.168.200.1:8081/RPC2","POPFile/API.")
  sessionKey = popfile.get_session_key("admin", "")  sessionKey = popfile.get_session_key("admin", "")
  message = MsgBox("POPFile Session Key is " & sessionKey, vbInformation, "POPFile Message")  message = MsgBox("POPFile Session Key is " & sessionKey, vbInformation, "POPFile Message")
  Print popfile.classify(sessionKey,"C:\spam.txt")  Print popfile.classify(sessionKey,"C:\spam.txt")
- popfile.release_session_key(sessionKey)</code>+ popfile.release_session_key(sessionKey)
 </code> </code>
  
 この実装では、 [[http://www.nsbasic.com/ce/| NS Basic/CE for Windows CE]] を使用しています。 この実装では、 [[http://www.nsbasic.com/ce/| NS Basic/CE for Windows CE]] を使用しています。
-[[http://www.pocketsoap.com/pocketHTTP/**PocketHTTP**]] と [[http://www.pocketsoap.com/pocketXMLRPC/**PocketXML-RPC**]] COM コンポーネントも必要になります。+[[http://www.pocketsoap.com/pocketHTTP/| PocketHTTP]] と [[http://www.pocketsoap.com/pocketXMLRPC/| PocketXML-RPC]] COM コンポーネントも必要になります。
  
 覚えておきましょう、ここでは、localhost にアクセスしているのではなく、POPFile をインストールしたのとは別のマシンを使用しています。そのため、モバイルマシンが、POPFile が稼働しているマシンの有効なネットワーク IPアドレスをさす必要があります。上記の例では、192.168.200.1 が POPFile が稼働しているあなたのデスクトップ PC のIP アドレスです。あなたのモバイルマシンが ブルートゥースや無線LANを経由して、XMLRPC インターフェースにアクセスすることになります。 覚えておきましょう、ここでは、localhost にアクセスしているのではなく、POPFile をインストールしたのとは別のマシンを使用しています。そのため、モバイルマシンが、POPFile が稼働しているマシンの有効なネットワーク IPアドレスをさす必要があります。上記の例では、192.168.200.1 が POPFile が稼働しているあなたのデスクトップ PC のIP アドレスです。あなたのモバイルマシンが ブルートゥースや無線LANを経由して、XMLRPC インターフェースにアクセスすることになります。
Line 143: Line 146:
 ==== 応用例  ==== ==== 応用例  ====
 === Perl の応用例 1 (もっと複雑なエラーチェック) === === Perl の応用例 1 (もっと複雑なエラーチェック) ===
-<code> +<code perl
-<code>use strict;+use strict;
 use XMLRPC::Lite; use XMLRPC::Lite;
  
Line 188: Line 191:
 # #
  
-exit(0);</code>+exit(0);
 </code> </code>
 上記のソースを testxml.pl というファイル名で保存し、コマンドラインパラメータとともに実行すれば、指定した API の実行結果が返ってきます。 上記のソースを testxml.pl というファイル名で保存し、コマンドラインパラメータとともに実行すれば、指定した API の実行結果が返ってきます。
 <code> <code>
-<code>   perl testxml.pl get_bucket_parameter spam count+   perl testxml.pl get_bucket_parameter spam count
    9418    9418
  
Line 213: Line 216:
    magnet    magnet
    normal    normal
-   spam</code>+   spam
 </code> </code>
  
 === 応用例 2 ==== === 応用例 2 ====
 pipe.pl を XMLRPC のクライアントとして実装します。 pipe.pl を XMLRPC のクライアントとして実装します。
-<code> +<code perl
-  -!/usr/bin/perl+#!/usr/bin/perl
 use strict; use strict;
 use XMLRPC::Lite; use XMLRPC::Lite;
  
-  - 安全な一時ファイルを使用したいのですが、このスクリプトはふつうひとりのユーザとして動くでしょう+安全な一時ファイルを使用したいのですが、このスクリプトはふつうひとりのユーザとして動くでしょう
 use File::Temp qw/tempfile tempdir/; use File::Temp qw/tempfile tempdir/;
  
-  - アクセスすることができるフォルダはスクリプトが終了したときに削除されるでしょう+アクセスすることができるフォルダはスクリプトが終了したときに削除されるでしょう
 my $temp_dir = tempdir( CLEANUP => 1); my $temp_dir = tempdir( CLEANUP => 1);
  
-  - フルパスが指定された一時ファイル+フルパスが指定された一時ファイル
 my ($fh_in, $filename_in) = tempfile('popfileinXXXXXXX', SUFFIX => ".msg", UNLINK => 1 , DIR => $temp_dir); my ($fh_in, $filename_in) = tempfile('popfileinXXXXXXX', SUFFIX => ".msg", UNLINK => 1 , DIR => $temp_dir);
  
-  - パイプとして動くため、標準入力 (STDIN) から読み込みます+パイプとして動くため、標準入力 (STDIN) から読み込みます
 while (<STDIN>) { while (<STDIN>) {
  print $fh_in $_;  print $fh_in $_;
 } }
  
-  - POPFile は、ファイルが閉じられていることを前提とします+POPFile は、ファイルが閉じられていることを前提とします
 close $fh_in; close $fh_in;
  
-  - 安全な出力ファイルを作成します+安全な出力ファイルを作成します
 my ($fh_out, $filename_out) = tempfile('popfileoutXXXXXXX', SUFFIX => ".msg", UNLINK => 1, DIR => $temp_dir); my ($fh_out, $filename_out) = tempfile('popfileoutXXXXXXX', SUFFIX => ".msg", UNLINK => 1, DIR => $temp_dir);
  
-  - XMLRPC のプロキシ+XMLRPC のプロキシ
 my $xmlrpc = XMLRPC::Lite ->proxy('http://localhost:8086/RPC2'); my $xmlrpc = XMLRPC::Lite ->proxy('http://localhost:8086/RPC2');
  
-  - POPFile に挨拶して、セッションキーを取得します+POPFile に挨拶して、セッションキーを取得します
 my $sk = $xmlrpc-> call('POPFile/API.get_session_key','admin',//) my $sk = $xmlrpc-> call('POPFile/API.get_session_key','admin',//)
  -> result;  -> result;
  
-  - ここで仕事をします+ここで仕事をします
 $xmlrpc-> call('POPFile/API.handle_message',$sk,$filename_in,$filename_out) $xmlrpc-> call('POPFile/API.handle_message',$sk,$filename_in,$filename_out)
  -> result;  -> result;
  
-  - POPFile にお別れをします+POPFile にお別れをします
 $xmlrpc-> call('POPFile/API.release_session_key',$sk); $xmlrpc-> call('POPFile/API.release_session_key',$sk);
  
-  - パイプとして動くために、標準出力 (STDOUT) に書き込みます+パイプとして動くために、標準出力 (STDOUT) に書き込みます
 while (<$fh_out>) { while (<$fh_out>) {
  print $_;  print $_;
 } }
  
-  - 終了します。File::Temp が(一時ファイルを)片付けてくれます+終了します。File::Temp が(一時ファイルを)片付けてくれます
 exit(0); exit(0);
  
 
jp/popfilemodules/xmlrpc.txt · Last modified: 2009/09/25 18:11 by 127.0.0.1
Old revisions

Should you find anything in the documentation that is incomplete, unclear, outdated or just plain wrong, please let us know and leave a note in the Documentation Forum.

Recent changes RSS feed Donate Driven by DokuWiki
The content of this wiki is protected by the GNU Fee Documentation License