XML RCP
http://www.linux.or.jp/JF/JFdocs/XML-RPC-HOWTO/xmlrpc-howto-intro.html
をみて実際にためしてみた
>python
>>> import xmlrpclib
>>> server = xmlrpclib.Server("http://betty.userland.com/RPC2")
>>> server.examples.getStateName(41)
'South Dakota'
>>>>groovysh
groovy> def serverProxy = new groovy.net.xmlrpc.XMLRPCServerProxy('http://betty.userland.com/RPC2')
groovy> println serverProxy.examples.getStateName(41);
groovy> go
South Dakotaへえ。
どんなデータがとんでくるのかしらべてみたら
groovy> def serverProxy = new groovy.net.xmlrpc.XMLRPCServerProxy('http://localost:10000/')
groovy> println serverProxy.examples.getStateName(41);POST / HTTP/1.1
Content-Length: 184
Content-Type: text/xml
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Java/1.5.0_04
Host: localhost:10000
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
<?xml version="1.0" encoding="ISO-8859-1"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param><value><i4>41</i4></value></param>
</params>
</methodCall>なるほど。ISO-8859-1なのかい。
じゃあ日本語をおくってみるとばけちゃうのか?
groovy> def serverProxy = new groovy.net.xmlrpc.XMLRPCServerProxy('http://localost:10000/')
groovysh>println serverProxy.examples.getStateName("日本語はどうなるんだ");POST / HTTP/1.1
Content-Length: 270
Content-Type: text/xml
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Java/1.5.0_04
Host: localhost:10000
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
<?xml version="1.0" encoding="ISO-8859-1"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param><value><string>日本語はど&#
x3046;なるんだ</string></value></param>
</params>
</methodCall>エンコードされるみているけどこれが仕様なのか?
Pythonはどうなのかみてみる。
>>> import xmlrpclib
>>> server = xmlrpclib.Server("http://localhost:10000")
>>> server.examples.getStateName("日本語")POST /RPC2 HTTP/1.0 Host: localhost:10000 User-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com) Content-Type: text/xml Content-Length: 171 <?xml version='1.0'?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><string>日本語</string></value> </param> </params> </methodCall>
うーん。こんなんできちんと相互接続ができるのか?