この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
ども、rick No.18です。
今回はSOAPについて書きます。
SOAPとは、データのやり取りをするためのもので、XMLに基づいています。
環境
ruby1.8.6
rails1.2.6
データの送受信
require “soap/wsdlDriver”
driver = “SOAP::WSDLDriverFactory.new(URL).create_rpc_driver”
# URLはWSDLファイル格納場所
# WSDLファイルによってフォーマットを決定する。(xml)
request = {“time” => “20100602100000”}
送信するデータはハッシュに入れて送信
@resopnse = driver.method(request)
これで送信ができる。
返信データは@responseに格納されている。(主に@response.body)
driver.methodのmethodはWSDLに記述されているメソッドだが、driver.singleton_methodsなどで、どのメソッドが使用可能か閲覧できる。
受信データ
自分が受信者となる場合、railsのSOAPを使用すると
SOAP::Mapping::Object:0x155556e53f10 {url}method名1=SOAP::Mapping::Object:0x155556e53217 {url}method名1-1=内容]
上記のような形式でデータが受信されます。
データの取り出し方は、
@res = @response[method名1]
=< SOAP::Mapping::Object:0x155556e53217 {url}method名1-1=内容
@res.method名1-1
=> 内容
このように取り出す事が可能です。 @resは複数になる場合、さらに配列となって格納されています。
また@responseで使用できるメソッド名もsingleton_methodsで確認可能です。