5

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

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

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

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

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

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

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

接受编码:gzip,deflate

内容类型:文本/xml;charset=UTF-8

SOAPAction:“”

授权:基本 RXhhbXBsZVVzZXJOYW1lOkV4YW1wbGVQYXNzd29yZA==

我正在使用 Savon gem 拨打电话。api_call鉴于上述信息,我将如何使用 Ruby 1.9.3 和 Savon gem 对 API 调用进行身份验证?

这是我用来设置 WSDL 或client.

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

1 回答 1

10

您需要在消息的 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”。

于 2013-10-11T04:07:12.953 回答