伙计我遇到了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中做同样的事情吗?
答案 0 :(得分:0)
我的标准回复:
答案 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.