Pythonで簡単にXML-RPCクライアント

Pythonでxmlrpclib使うと、簡単にXML-RPCが扱える。

FlashとサーバサイドでXML-RPC使おうとしたときに、サーバ側のAPIのテストと、XMLのサンプルをFlash作る人に渡したりするのだけど、それがちょこっと書くだけでできるので便利。何せ2行で済む。

# -*- encoding: utf-8 -*-
import xmlrpclib

print xmlrpclib.dumps(
    (
        {'image':xmlrpclib.Binary('hoge')},
        {'username':u'name'},
        {'title':u'item title'},
        {'mail':u'user e-mail'},
        {'comment':u'item comment'},
        {'itemlist':[3,2,3,1]}
    ), 'sample.hogehogeAPI')

結果はこんな感じに。

<?xml version='1.0'?>
<methodCall>
<methodName>sample.hogehogeAPI</methodName>
<params>
<param>
<value><struct>
<member>
<name>image</name>
<value><base64>
aG9nZQ==
</base64></value>
</member>
</struct></value>
</param>
<param>
<value><struct>
<member>
<name>username</name>
<value><string>name</string></value>
</member>
</struct></value>
</param>
<param>
<value><struct>
<member>
<name>title</name>
<value><string>item title</string></value>
</member>
</struct></value>
</param>
<param>
<value><struct>
<member>
<name>mail</name>
<value><string>user e-mail</string></value>
</member>
</struct></value>
</param>
<param>
<value><struct>
<member>
<name>comment</name>
<value><string>item comment</string></value>
</member>
</struct></value>
</param>
<param>
<value><struct>
<member>
<name>itemlist</name>
<value><array><data>
<value><int>3</int></value>
<value><int>2</int></value>
<value><int>3</int></value>
<value><int>1</int></value>
</data></array></value>
</member>
</struct></value>
</param>
</params>
</methodCall>

簡単すぎる…

んで、この結果をFlashの人に渡して、こんな感じで送ってくれと言える。

サーバのAPIをテストする場合は

# -*- encoding: utf-8 -*-
import xmlrpclib

server_url = 'http://sample.dev/add';
server = xmlrpclib.Server(server_url);

result = server.sample.hogehogeAPI(
        {'image':xmlrpclib.Binary('hoge')},
        {'username':u'name'},
        {'title':u'item title'},
        {'mail':u'user e-mail'},
        {'comment':u'item comment'},
        {'itemlist':[3,2,3,1]}
    )

こんな感じで書き換えてやればOK


新しく会社作りました!

コメントをどうぞ