リクエストの本文を次のように表示する必要があります。
<env:Body>
<abc:request token="0" id="1" version="4">
<category domain_id="630643"/>
</abc>
</env:Body>
追加の属性をに追加するにはどうすればよいですか?
さらに、エンコーディングをUTF-8からUTF-16にどのように変更しますか?ドキュメントでこれを見つけることができません。
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 リクエストを送信する」を参照してください。