2
私はSavonを使ってWebサービスクライアントを開発しています。Savon + Rails 2 XMLのリクエスト構造を変更する方法
私のコントローラは非常に簡単です::
require 'savon'
class WebServiceController < ApplicationController
def index
puts "web_service: IN"
client = Savon::Client.new do
wsdl.document = "http://www.webservicex.com/CurrencyConvertor.asmx?wsdl"
end
response = client.request :conversion_rate do
soap.body = {
:from_currency => 'USD',
:to_currency => 'EUR'
}
end
puts response.to_hash;
render :text => response.to_hash
end
end
私は、私の場合であり、私は例のWDSLで最初に試してみることにした初心者、ですので、そのコードによって生成されるXMLは、
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wsdl="http://www.webserviceX.NET/"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<ConversionRate>
<wsdl:fromCurrency>USD</wsdl:fromCurrency>
<wsdl:toCurrency>EUR</wsdl:toCurrency>
</ConversionRate>
</env:Body>
</env:Envelope>
しかし、XMLは(と私はあるsoapUIを使用していますので、私はこれを知っている)のようになります。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web="http://www.webserviceX.NET/">
<soapenv:Header/>
<soapenv:Body>
<web:ConversionRate>
<web:FromCurrency>USD</web:FromCurrency>
<web:ToCurrency>EUR</web:ToCurrency>
</web:ConversionRate>
</soapenv:Body>
</soapenv:Envelope>
私は常に取得するので、私は私のXMLリクエストが動作していない知っている「0」(ゼロ)としてレスポンスを返し、soapUIによって生成された「正しい」XMLリクエストで正しい値(「0.6959」など)を取得します。
コードに何か不足していますか?
ありがとうございます!