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

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

在您的客户端中,构建您的授权标头,如下所示:

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

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

3在代码中,输入值为Basic的Authorization标头。

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

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

Accept-Encoding:gzip,deflate

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

SOAPAction:“”

授权:基本RXhhbXBsZVVzZXJOYW1lOkV4YW1wbGVQYXNzd29yZA ==

我正在使用Savongem来打电话。 在给定上述信息的情况下,如何使用Ruby 1.9.3和Savon gemvalidationAPI调用api_call

这就是我用来设置WSDL或client

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

您需要在邮件的SOAP标头中包含身份validation凭据。 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”。