This shows you the differences between two versions of the page.
Next revision | Previous revisionNext revisionBoth sides next revision | ||
jp:popfilemodules:xmlrpc [2007/01/24 09:44] – amatubu | jp:popfilemodules:xmlrpc [2009/09/06 15:38] – Fixed sample codes amatubu | ||
---|---|---|---|
Line 27: | Line 27: | ||
* XMLRPC.pm は POPFile がインストールされたディレクトリの UI ディレクトリにインストールしなければいけません。これは CVS の [[http:// | * XMLRPC.pm は POPFile がインストールされたディレクトリの UI ディレクトリにインストールしなければいけません。これは CVS の [[http:// | ||
- | * XML-RPC の機能を使用するためには XMLRPC:: | + | * XML-RPC の機能を使用するためには XMLRPC:: |
- | < | + | < |
- | > | + | ppm |
- | </ | + | > |
+ | </ | ||
+ | とします。 | ||
===== サンプルコード ===== | ===== サンプルコード ===== | ||
+ | |||
==== 簡単な例 ==== | ==== 簡単な例 ==== | ||
=== Perl の例 1 === | === Perl の例 1 === | ||
- | < | + | < |
- | < | + | use strict; |
use XMLRPC:: | use XMLRPC:: | ||
Line 49: | Line 52: | ||
XMLRPC:: | XMLRPC:: | ||
- | -> call(' | + | -> call(' |
</ | </ | ||
上記のソースを testxml.pl というファイル名で保存し、正しく設定されたシステムでテスト用のメッセージ ' | 上記のソースを testxml.pl というファイル名で保存し、正しく設定されたシステムでテスト用のメッセージ ' | ||
< | < | ||
- | < | + | perl testxml.pl |
- | spam</ | + | spam |
</ | </ | ||
=== Python の例 1 === | === Python の例 1 === | ||
- | < | + | < |
- | < | + | from xmlrpclib import ServerProxy |
POPFile = ServerProxy(" | POPFile = ServerProxy(" | ||
pf = POPFile.POPFile.API # | pf = POPFile.POPFile.API # | ||
key = pf.get_session_key(" | key = pf.get_session_key(" | ||
print pf.classify(key, | print pf.classify(key, | ||
- | pf.release_session_key(key)</ | + | pf.release_session_key(key) |
</ | </ | ||
上記のソースを testxml.py というファイル名で保存し、正しく設定されたシステムでテスト用のメッセージ ' | 上記のソースを testxml.py というファイル名で保存し、正しく設定されたシステムでテスト用のメッセージ ' | ||
< | < | ||
- | < | + | python testxml.py |
- | spam</ | + | spam |
</ | </ | ||
=== Delphi の例 === | === Delphi の例 === | ||
- | < | + | < |
- | < | + | program popdelphi; |
{$APPTYPE CONSOLE} | {$APPTYPE CONSOLE} | ||
Line 114: | Line 117: | ||
caller.Free; | caller.Free; | ||
func.Free; | func.Free; | ||
- | end.</ | + | end. |
</ | </ | ||
Line 121: | Line 124: | ||
上記のソースを保存し、コンパイルすれば、**popdelphi.exe** ができるでしょう。これを DOS 窓で実行し、メッセージのファイル名を引数として渡し、正しく設定されたシステムを使用していれば、次のような結果が出力されるでしょう: | 上記のソースを保存し、コンパイルすれば、**popdelphi.exe** ができるでしょう。これを DOS 窓で実行し、メッセージのファイル名を引数として渡し、正しく設定されたシステムを使用していれば、次のような結果が出力されるでしょう: | ||
< | < | ||
- | < | + | popdelphi popfile99.msg |
- | spam</ | + | spam |
</ | </ | ||
=== NSBasic/CE for Windows CE Example === | === NSBasic/CE for Windows CE Example === | ||
- | < | + | < |
- | < | + | |
Set popfile = xmlrpc.proxy(" | Set popfile = xmlrpc.proxy(" | ||
| | ||
| | ||
Print popfile.classify(sessionKey," | Print popfile.classify(sessionKey," | ||
- | | + | |
</ | </ | ||
この実装では、 [[http:// | この実装では、 [[http:// | ||
- | [[http:// | + | [[http:// |
覚えておきましょう、ここでは、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 (もっと複雑なエラーチェック) === | ||
- | < | + | < |
- | < | + | use strict; |
use XMLRPC:: | use XMLRPC:: | ||
Line 188: | Line 191: | ||
# | # | ||
- | exit(0);</ | + | exit(0); |
</ | </ | ||
上記のソースを testxml.pl というファイル名で保存し、コマンドラインパラメータとともに実行すれば、指定した API の実行結果が返ってきます。 | 上記のソースを testxml.pl というファイル名で保存し、コマンドラインパラメータとともに実行すれば、指定した API の実行結果が返ってきます。 | ||
< | < | ||
- | < | + | perl testxml.pl get_bucket_parameter spam count |
9418 | 9418 | ||
Line 213: | Line 216: | ||
| | ||
| | ||
- | spam</ | + | spam |
</ | </ | ||
=== 応用例 2 ==== | === 応用例 2 ==== | ||
pipe.pl を XMLRPC のクライアントとして実装します。 | pipe.pl を XMLRPC のクライアントとして実装します。 | ||
- | < | + | < |
- | -!/ | + | #!/ |
use strict; | use strict; | ||
use XMLRPC:: | use XMLRPC:: | ||
- | - 安全な一時ファイルを使用したいのですが、このスクリプトはふつうひとりのユーザとして動くでしょう | + | # 安全な一時ファイルを使用したいのですが、このスクリプトはふつうひとりのユーザとして動くでしょう |
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(' | my ($fh_in, $filename_in) = tempfile(' | ||
- | - パイプとして動くため、標準入力 (STDIN) から読み込みます | + | # パイプとして動くため、標準入力 (STDIN) から読み込みます |
while (< | while (< | ||
print $fh_in $_; | print $fh_in $_; | ||
} | } | ||
- | - POPFile は、ファイルが閉じられていることを前提とします | + | # POPFile は、ファイルが閉じられていることを前提とします |
close $fh_in; | close $fh_in; | ||
- | - 安全な出力ファイルを作成します | + | # 安全な出力ファイルを作成します |
my ($fh_out, $filename_out) = tempfile(' | my ($fh_out, $filename_out) = tempfile(' | ||
- | - XMLRPC のプロキシ | + | # XMLRPC のプロキシ |
my $xmlrpc = XMLRPC:: | my $xmlrpc = XMLRPC:: | ||
- | - POPFile に挨拶して、セッションキーを取得します | + | # POPFile に挨拶して、セッションキーを取得します |
my $sk = $xmlrpc-> | my $sk = $xmlrpc-> | ||
-> result; | -> result; | ||
- | - ここで仕事をします | + | # ここで仕事をします |
$xmlrpc-> | $xmlrpc-> | ||
-> result; | -> result; | ||
- | - POPFile にお別れをします | + | # POPFile にお別れをします |
$xmlrpc-> | $xmlrpc-> | ||
- | - パイプとして動くために、標準出力 (STDOUT) に書き込みます | + | # パイプとして動くために、標準出力 (STDOUT) に書き込みます |
while (< | while (< | ||
print $_; | print $_; | ||
} | } | ||
- | - 終了します。File:: | + | # 終了します。File:: |
exit(0); | exit(0); | ||
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.