2

リクエストの本文を次のように表示する必要があります。

<env:Body>

<abc:request token="0" id="1" version="4">
<category domain_id="630643"/>
</abc>

</env:Body>

追加の属性をに追加するにはどうすればよいですか?

さらに、エンコーディングをUTF-8からUTF-16にどのように変更しますか?ドキュメントでこれを見つけることができません。

4

1 に答える 1

2

カスタム属性を持つ SOAP ボディ:

client.request :abc, :request, :token => 0, :id => 1, :version => 4 do
  soap.body = {
    :category => "",
    :attributes! => { :category  => { "domain_id" => 630643 } }
  }
end

Savon::Client#request名前空間、呼び出す SOAP アクションの名前、および SOAP 入力タグの属性のオプションのハッシュを受け入れます。

<abc:request version="4" id="1" token="0">

:attributes!SOAP ボディ タグの属性は、特別なハッシュを介して設定できます。domain_idハッシュ キー シンボルは (デフォルトで) lowerCamelCase に変換されるため、属性が文字列であることに注意してください。

<category domain_id="630643"></category>

また、Gyokuは自己終了タグを作成していないことに注意してください。Savon は Gyoku を使用して Ruby ハッシュを XML に変換し、ライブラリは自己終了タグを作成できますが、それらのカスタム属性を飲み込んでいるようです (v0.4.2)。これはバグであり、次のリリースで修正される必要があります。

詳細情報と例は、新しいドキュメントに記載されています。


デフォルトのエンコーディングの変更

Savon はHTTPIを使用して HTTP リクエストを実行し、HTTPI::Request経由でオブジェクトにアクセスできますSavon::Client#http。カスタムの「Content-Type」ヘッダーを設定することで、デフォルトのエンコーディングを UTF-16 に変更できるはずです。

client.http.headers["Content-Type"] = "text/xml;charset=UTF-16"

これは、xml 処理命令のエンコーディング属性を変更しないことに注意してください。

<?xml version="1.0" encoding="UTF-8"?>

処理命令の変更方法については、「Ruby と Savon で UTF-16 エンコードされた SOAP リクエストを送信する」を参照してください。

于 2011-04-23T11:06:02.057 に答える