ruby - 与瑞典 BankId 集成时出现 SOAP 错误

标签 ruby soap savon bankid

我正在尝试与 BankId 集成(这是瑞典的常见身份验证和签名服务)。我正在使用 Savon Ruby SOAP 客户端,并尝试按照 guidelines 向 BankId 的测试 API 发出请求。当调用“身份验证”操作时,我收到以下错误:

The given SOAPAction Authenticate does not match an operation

SOAP 请求如下所示:

SOAP request: https://appapi.test.bankid.com/rp/v4
SOAPAction: "Authenticate", Content-Type: text/xml;charset=UTF-8, Content-Length: 384
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rp="http://bankid.com/RpService/v4.0.0/types/" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <rp:AuthenticateRequest>
       <personalNumber>12345678</personalNumber>
     </rp:AuthenticateRequest>
  </env:Body>
</env:Envelope>

我正在使用以下详细信息创建 session :

代码如下:

> client = Savon.client(wsdl: 'https://appapi.test.bankid.com/rp/v4?wsdl', namespace: 'http://bankid.com/RpService/v4.0.0/types/', endpoint: 'https://appapi.test.bankid.com/rp/v4', ssl_cert_file: "XXXX/cert.pem", ssl_cert_key_file: "XXX/key.pem", ssl_cert_key_password: "qwerty123", pretty_print_xml: true, log_level: :debug, log: true)

> client.call(:authenticate, message: {personalNumber: '12345678'})

我应该提到,我对使用 SOAP API 不太熟悉。

最佳答案

我只需要明确指出不需要soap_action header 。

> client = Savon.client(wsdl: 'https://appapi.test.bankid.com/rp/v4?wsdl', namespace: 'http://bankid.com/RpService/v4.0.0/types/', endpoint: 'https://appapi.test.bankid.com/rp/v4', ssl_cert_file: "XXXX/cert.pem", ssl_cert_key_file: "XXX/key.pem", ssl_cert_key_password: "qwerty123", pretty_print_xml: true, log_level: :debug, log: true)

> client.call(:authenticate, message: {personalNumber: '12345678'}, soap_action: '')

关于ruby - 与瑞典 BankId 集成时出现 SOAP 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35428811/

相关文章:

Ruby:Savon SOAP 请求收到 400 和 415 错误

ruby - "HTTPI tried to user the httpi adapter"使用 Savon SOAP 库时出错

ruby-on-rails - '需要': cannot load such file -- 'nokogiri\nokogiri' (LoadError) when running `rails server`

ruby - 从 Redis::Objects 获取哈希表示

ruby - Chef : Define same attribute with different values for different cookbooks

c# - 通过 ANDROID APP 使用本地托管的 SOAP 服务

鲁比·萨文 : How to get the request text sent to server?

ruby-on-rails - RSpec - stub 实例方法

c# - XML 文档中存在错误

ruby - Savon:XML 标签数组