需要从Savon生成的请求中删除SOAP Action

时间:2013-11-16 02:36:39

标签: ruby-on-rails xml soap wsdl savon

我需要使用Savon 2从我的请求中删除SOAPAction。

这就是我构建客户端的方式:

client = Savon.client do
wsdl "http://servername:port/PingService?wsdl"
convert_request_keys_to :none
env_namespace :soapenv
namespaces({
 'xmlns:pin' => 'http://servername:port/pingService_v1'
 })
 end

我使用以下调用来发出请求:

client.call(:invoke,  message:  { "pin:PingReq" => { "pin:PingDB" => "true", "pin:PingG" => "true" }})

这是发送的请求:

<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://support.cxf.transport.mule.org/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pin="http://servername/pingService_v1">
<soapenv:Body>
<tns:invoke>
<pin:PingReq>
<pin:PingDB>true</pin:PingDB>
<pin:PingG>true</pin:PingG>
</pin:PingReq>
</tns:invoke>
</soapenv:Body>
</soapenv:Envelope>

有效请求将包含除tns:invoke标记之外的所有内容。

1 个答案:

答案 0 :(得分:2)

使用Savon 2.x,你可以这样做:

client.call(:method, xml: "<tns:invoke><pin:PingReq> ...")