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>
うーん。こんなんできちんと相互接続ができるのか?