使用ruby / savon访问Cerberus API

时间:2015-04-10 11:13:06

标签: ruby soap wsdl savon

伙计我遇到了wsdl处理的问题。 Cerberus FTP服务器拥有自己的wsdl API用于服务器配置 www.cerberusftp.com/support/help/webservices.htm 我尝试用ruby和savon执行一些函数,如下所示:

#!/usr/bin/ruby
# -*- coding: utf-8 -*-
require 'savon'
client = Savon.client(wsdl: "http://192.168.1.5:10001/wsdl/Cerberus.wsdl")
response = client.call(:server_information) do 

  message credentials:  {user: "admin", password: "123"}
end

从嗅探器我可以看到POST请求

  <?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:tns="http://cerberusllc.com/service/cerberusftpservice" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
- <env:Body>
- <tns:ServerInformationRequest>
- <tns:credentials>
  <tns:user>admin</tns:user> 
  <tns:password>123</tns:password> 
  </tns:credentials>
  </tns:ServerInformationRequest>
  </env:Body>
  </env:Envelope>

我也尝试过工具Membarene SOAP客户端

<s12:Envelope xmlns:s12='http://www.w3.org/2003/05/soap-envelope'>
  <s12:Body>
    <ns1:ServerInformationRequest xmlns:ns1='http://cerberusllc.com/service/cerberusftpservice'>
      <ns1:credentials xmlns:ns1='http://cerberusllc.com/common'>
        <ns1:user>admin</ns1:user>
        <ns1:password>123</ns1:password>
      </ns1:credentials>
    </ns1:ServerInformationRequest>
  </s12:Body>
</s12:Envelope>

它的POST请求略有不同,而且有效。 知道如何在ruby + savon中做同样的事情吗?

2 个答案:

答案 0 :(得分:0)

我的标准回复:

  1. 下载SoapUI
  2. 建立有效的成功电话
  3. 使用Savon(而不是RoR)在Ruby中重建
  4. 在这里提问,你会得到帮助: - )

答案 1 :(得分:0)

我已经解决了这个问题。 我手动生成XML查询。 它看起来像:

client = Savon.client(wsdl: "http://example.com:10001/wsdl/Cerberus.wsdl")
variable = client.call(:add_group xml: "your xml " ) # you can generate this xml via SoapUI tool or Membarene SOAP client.