2013-10-09 58 views
3

我提出來首次基於SOAP的API調用,我必須從文檔以下信息:如何編寫SOAP驗證頭部用Ruby薩翁

在你的客戶,構建您的授權頭如下:

1串聯的用戶名和密碼,例如: EXAMPLEUSERNAME:ExamplePassword

2編碼在基座64的字符串,例如: RXhhbXBsZVVzZXJOYW1lOkV4YW1wbGVQYXNzd29yZA ==

3在您的代碼中,輸入值爲「基本」的授權標頭。

實施例的Web服務報頭具有編碼的用戶名和密碼

POST https://api.five9.com/wsadmin/AdminWebService HTTP/1.1

接受編碼:gzip,放氣

內容類型:文本/ XML;字符集= UTF- 8

的SOAPAction: 「」

授權:基本RXhhbXBsZVVzZXJOYW1lOkV4YW1wbGVQYXNzd29yZA ==

我正在使用薩翁寶石來打我的電話。考慮到上述信息,我將如何使用Ruby 1.9.3和Savon gem驗證API調用api_call

這就是我用來設置WSDL或client

client = Savon.client(wsdl: "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl&[email protected]") 

回答

6

您需要將驗證憑證包含在消息的SOAP頭中。 Savon提供:soap_header符號。

你舉的例子可能是這樣的:

require 'savon' 
require 'securerandom' 

realm = Base64.strict_encode64("ExampleUsername:ExamplePassword") 
client = Savon.client(
    wsdl: "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl", 
    soap_header: { 'Authorization:' => "BasiC#{realm}"}, 
    log: true, 
    log_level: debug, 
    pretty_print_xml: true 
) 

我無法測試它這個例子,因爲我缺乏用戶憑據,但它通過「紅寶石-C」。

+0

感謝您的提示。這是有道理的,並按預期生成調用。 – Luigi

+3

在savon v2中,我不得不使用新的語法:'basic_auth:[「username」,「password」],' – house9

+0

我認爲最初的問題是'basic_auth'由於某種原因不起作用。因此我們必須回到http頭文件的原始編碼。 –