无效的SOAP请求需求

时间:2018-08-26 19:07:50

标签: ruby-on-rails ruby savon

我正在使用savon来针对SOAP服务进行请求。

无论如何,我在打Savon客户电话时遇到麻烦。

下面提到的是我的红宝石代码

client = Savon.client(
    wsdl: "https://<URL>",
    soap_header: { 'Content-Type:' => "text/xml"},
    log: true,    
    pretty_print_xml: true
)

client.call(:get_active_employees_info,:xmlns =>"http://tempuri.org/") do
  message("AppID" => "*******","Username" => "*****","Password" => "******")
end

返回

Savon::HTTPError: HTTP error (400)

但是在Postman上运行相同的摘要

<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <GetActiveEmployeesInfo xmlns="http://tempuri.org/">
      <AppID>**********</AppID>
      <Username>********</Username>
      <Password>**********</Password>
    </GetActiveEmployeesInfo>
  </soap12:Body>
</soap12:Envelope>

1 个答案:

答案 0 :(得分:0)

我认为问题与您正在构建的请求正文有关。

由于您有一个可行的示例,因此我将首先检查savon的请求的主体构建。为此,请使用以下代码:

 ops = client.operation(:get_active_employees_info)
 puts ops.build(message: {"AppID" => "*******","Username" => "*****","Password" => "******"}).pretty

然后,将生成的消息与Postman的消息进行比较。希望对您有所帮助。