たとえば
def plus(num1, num2):という関数をXMLRPCサーバから公開したい場合
return num1 + num2
from SimpleXMLRPCServer import CGIXMLRPCRequestHandlerとすれば出来上がります。
handler = CGIXMLRPCRequestHandler()
handler.register_function(plus)
handler.handle_request()
またモジュールとしてインタフェースを提供したい場合は
class Foo:というインタフェースに対して
def plus(self, num1, num2):
return num1 + num2
from SimpleXMLRPCServer import CGIXMLRPCRequestHandlerこうすれば出来上がり。
handler = CGIXMLRPCRequestHandler()
handler.register_instance(Foo())
handler.handle_request()
先ほど、NabeAtzz APIをXMLRPCとして呼び出せるインタフェースを作りました。
エントリポイントは
http://mattn.appspot.com/nabeatzz_xmlrpcとなります。試しにpythonでXMLRPC Clientを作成し呼び出してみます。
# -*- coding: utf-8 -*-コードはこんな感じでしょうか。これを実行すると正しく
import sys
from xmlrpclib import ServerProxy
api = ServerProxy("http://mattn.appspot.com/nabeatzz_xmlrpc")
for n in range(1, 11):
res = api.nabeatzz(n)
print "%s : %s" % (res['number'], res['japanese'])
if res.has_key('nabeatzz'):
for c in res['nabeatzz']:
print " %s" % c
1 : いちという結果が得られました。
2 : に
3 : さん
アホになる
4 : よん
5 : ご
犬っぽくなる
6 : ろく
アホになる
7 : なな
8 : はち
9 : きゅう
アホになる
10 : じゅう
犬っぽくなる



![Validate my RSS feed [Valid RSS]](http://mattn.kaoriya.net/images/valid-rss-rogers.png)

