その他
    ホーム 技術発信 DoRuby Ruby on Rails SOAP

    Ruby on Rails SOAP

    この記事はアピリッツの技術ブログ「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で確認可能です。