如何使用Ruby Savon编写SOAP身份验证标头

时间:2013-10-09 23:10:51

标签: ruby api soap savon

我是第一次调用基于SOAP的API,我从文档中获得了以下信息:

  

在您的客户端中,按如下方式构建授权标头:

     

1连接用户名和密码,例如:   EXAMPLEUSERNAME:ExamplePassword

     

2在base 64中编码字符串,例如:   RXhhbXBsZVVzZXJOYW1lOkV4YW1wbGVQYXNzd29yZA ==

     

3在您的代码中,输入值为Basic的授权标题。

     

带有编码用户名和密码的示例Web服务标头

     

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

     

Accept-Encoding:gzip,deflate

     

Content-Type:text / xml; charset = UTF-8

     

SOAPAction:“”

     

授权:基本RXhhbXBsZVVzZXJOYW1lOkV4YW1wbGVQYXNzd29yZA ==

我正在使用Savon宝石来打电话。在给定上述信息的情况下,如何使用Ruby 1.9.3和Savon gem验证API调用api_call

这是我用来设置WSDL或client

client = Savon.client(wsdl: "https://api.five9.com/wsadmin/v2/AdminWebService?wsdl&user=luigi@apitest.com")

1 个答案:

答案 0 :(得分: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
)

我无法测试此示例,因为我缺少用户凭据,但它传递了“ruby -c”。