2011-10-29 76 views
0

我想使用一個帶有「verifyTransaction」方法的webservice,它將兩個字符串作爲輸入並返回一個double作爲輸出。 我用下面的代碼:Savon on Rails 3.1-無法調用使用WSDL的方法

client = Savon::Client.new do |wsdl| 
    wsdl.document = "https://www.myserver.com/ReferencePayment?WSDL" 
end 

response = client.request :wsdl, "verifyTransaction" do 
    soap.body ={"RefNum" => "121312", "MerchantID" => "02233763"} 
end 

但我得到這個錯誤:

Savon::SOAP::Fault ((env:Client) caught exception while handling request: unexpected encoding style: expected=http://schemas.xmlsoap.org/soap/encoding/, actual=) 

我一直在閱讀網頁上的所有資源,但我無法找到任何解決方案。 請幫我這個。

+0

您試圖下載的WSDL似乎沒有預期的格式? – nathanvda

+0

wsdl的預期格式是什麼?我很確定WSDL應該沒問題。它來自金融機構,許多用戶已經在使用它。沒有WSDL的 –

+0

幾乎不可能幫助你。有沒有公​​開的網址? –

回答

0

我使用SoapUI和Savon解決了這個問題。

我在了SoapUI打開了WSDL,產生的樣本請求和複製/粘貼到薩翁這樣的:

client = Savon::Client.new do |wsdl| 
    wsdl.document = "https://acquirer.sb24.com/ref-payment/ws/ReferencePayment?WSDL" 
end 

response = client.request "verifyTransaction" do 
    soap.xml = 'XML will be here' 
end 

它工作得很好! :)