Squeakあれこれ

Squeak関連情報など

[Squeak][N7]Spy-XML-RPCを試す

2005-03-29 | squeakあれこれ
YAXOネタでSpy-XML-RPCを試す。本当はYAXOネタはもう打ち止めとしようとしてたんだけど、WEBサービス 郵便専門ネットを外部システムから活用するというサイトで、XML-RPCサービスしていたので、サンプルに使わせてもらいました。Spy-XML-RPCXML-RPCのクライアントを実装したものです。インストールは下記参照。

  1. Spy-XML-RPCをダウンロード・ファイルイン
  2. YAXOのChangeSetをダウンロード・ファイルイン


ただN7ではXMLRPCProxy>>sendXmlRpcを次のように修正する必要がありました。
"xml _ s getRestOfBuffer: (res at: 3) contents readStream."
xml _ (s getRestOfBuffer: (res at: 3)) readStream.

で上記サイト(郵便専門ネットをXML-RPCで活用する)を参考に郵便番号から住所を取得してみるコード。
| url proxy result |
url := Url absoluteFromText: 'http://yubin.senmon.net:80/service/xmlrpc/'.
proxy := XMLRPCProxy withUrl: url.
result := proxy 
	invokeMethod: 'yubin.fetchAddressByPostcode' withArgs: #('1160013').
result do: [ :dic |
	dic keysDo: [ :key |
		(dic at: key) class == String ifTrue: [ | t |
			t := (dic at: key) convertFromWithConverter:
				 (TextConverter newForEncoding: 'utf-8').
			dic at: key put: t.]]].
result
	--> #(a Dictionary('addr_name'->''
 'addr_name_kana'->''
 'city'->'荒川区'
 'city_kana'->'アラカワク'
 'data_type'->'p'
 'jiscode'->'13118'
 'other'->''
 'postcode'->'1160013'
 'pref'->'東京都'
 'pref_kana'->'トウキョウト'
 'town'->'西日暮里'
 'town_kana'->'ニシニッポリ'
 'yid'->38111 ))

補足:本来はXMLDocument>>encodingで得たエンコードにしたがって、XMLRPCDecoder>>decode:でコード変換すべき。サーバはSqueakMapにXMLRPCが登録されています。

参考リンク:
XML-RPC Server

次回は梅澤さんのSIXXにチャレンジかなと…

最新の画像もっと見る