7

Savon を使用して SOAP リクエストを作成しようとしていますが、残念ながら、基本を少し超える必要があります。

次の行に沿って何かを送信する必要があります。

<env:Body>
  <wsdl:methodName>
    <parameter xsi:type='ValueClass'>value</parameter>
  </wsdl:methodName>
</env:Body>

ここで、xsi:type を指定する必要がなければ、次のような単純な問題になります。

client.method_name { |soap| soap.body = {:parameter => 'value'} }

問題は、パラメーターの xsi:type です。私が使用している Web サービスはポリモーフィズムを中心に構築されているため、パラメーターの型を明示的に指定する必要があります。これを行う方法はありますか (できれば、独自の XML を生成する必要はありません)。

ありがとう!

4

1 に答える 1

7

ハッシュで XML 属性を指定するのはかなり見苦しいですが、可能です:

client.method_name do |soap|
  soap.body = {
    :parameter => 'value',
    :attributes! => { :parameter => { 'xsi:type' => ValueClass } }
  }
end

ご覧ください: http://github.com/rubiii/savon/wiki/SOAP

Savon が XML スキーマ属性をサポートするまでは、Builder
(Savon に付属) を使用して XML を生成することをお勧めします。

client.method_name do |soap|
  xml = Builder::XmlMarkup.new
  soap.body = xml.parameter "value", "xsi:type" => "ValueClass"
end
于 2010-09-26T10:11:14.110 に答える