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