2013-08-27 79 views
4

我正在使用savon 2.2進行SOAP調用。無法在savon調用上設置SOAP標頭參數

初始化:

client = Savon.client(
    wsdl: SOAP_WSDL, 
    endpoint: SOAP_URL) 

我可以做一個SOAP調用像這樣和正常工作:

resp = client.call(:login, message: { username: SOAP_USER, password: SOAP_PASSWORD }) 

現在我需要另一個調用該方法要求在SOAP頭設置一些參數。從savorb.com的文檔,我發現我應該用請求的方法:

response = client.request :get_user_info do 
    soap.header = { :session_id => sid } 
end 

但我發現了一個錯誤,指出請求的方法不存在:

undefined method `request' for #<Savon::Client:0x007f1560f80490> 

難道我有一個不同版本的savon還是什麼?我嘗試使用「呼叫」,而不是「請求」,但後來我得到:

ArgumentError - wrong number of arguments (1 for 2): 
gem) savon-2.2.0/lib/savon/options.rb:35:in `method_missing' 
(gem) savon-2.2.0/lib/savon/block_interface.rb:20:in `method_missing' 
app/models/tool.rb:23:in `block in doUpload' 

回答

0

如果您創建一個新的薩翁客戶與會話ID?

client = Savon.client(
    wsdl: SOAP_WSDL, 
    endpoint: SOAP_URL, 
    soap_header: { 
    "Header" => { "session_id" => sid } 
    } 
) 

client.call(:get_user_info, message: data) 
7

你是在Savon 2.2.0上。 您應該使用

response = client.call(:get_user_info, :soap_header => { :session_id => sid }) 

「請求」是從1.x版本的方法和了不支持的。

0

或者這樣,對於一個標題和正文:

@response = @client.call(operation, { :message => message, :soap_header => header })