2014-02-26 40 views
0

我是SOAP的新手,而且我對Savon有很多麻煩。 我試圖訪問的API具有非常簡單的文檔:http://www.sona-systems.com/support/docs/sona_api_docs.pdfRuby:在EndpointDispatcher SOAP API中使用Ruby:Savon AddressFilter不匹配

在進行調用時,API期望在要發送的參數中進行身份驗證。這裏是我的代碼:

client = Savon.client(
wsdl: "https://school.sona-systems.com/services/SonaAPI.svc?singleWsdl", 
soap_header: {'To:' => "http://www.sona-systems.com/"}, 
pretty_print_xml: true, 
soap_version: 2 
) 

response = client.call(:get_study_list) do 
    message username: "foo", password: "bar" 
end 

我收到以下錯誤:

Savon::SOAPFault: (s:Sender) The message with To '' cannot be processed at the receiver, due to an AddressFilter mismatch at the EndpointDispatcher. Check that the sender and receiver's EndpointAddresses agree. 

回答

0

什麼是該做的soap_header:

我也無法訪問您提供的網址。您應該將log: true, log_level: :debug添加到您的客戶定義中以獲取更多信息。

試試這個:

client = Savon.client(
    wsdl: "https://kellogg-elab.sona-systems.com/services/SonaAPI.svc?wsdl", 
    pretty_print_xml: true, 
    log: true, 
    log_level: :debug 
) 
puts client.operations 

# then call a method of the service like this 

resp = client.call(:get_study_list, 
       message: {username: "foo", password: "bar"} 
      ) 
+0

斯特芬,感謝您的答覆。 標題應該修復空的To Savon給我的,不知道這是否可行... 我可以讀取操作,但是當調用不同的方法時,我得到上面的錯誤。正確的鏈接將是https://kellogg-elab.sona-systems.com/services/SonaAPI.svc?singleWsdl「 – avyfain

+0

我爲呼叫添加了一個示例,您不要給它一個塊,而是參數。顯然不適合具體的電話會議,但你應該明白這裏的內容。 –

相關問題