Ruby和Savon(2.3)SOAP客户端 - 无法与Web服务连接

时间:2014-03-04 06:30:57

标签: ruby xml soap soap-client savon

我正在尝试使用Savon(2.3)用Ruby发出SOAP请求,但是我收到了来自服务器的500错误代码。

服务器响应: -

SOAP响应(状态500) D,[2014-03-04T11:44:03.824902#10771] DEBUG - :soap:ServerSystem.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---> System.Xml.XmlException:根级别的数据无效。第1行,第1位。    在System.Xml.XmlTextReaderImpl.Throw(例外e)

Ruby代码: -

require 'savon'

client = Savon.client(encoding: "UTF-8",env_namespace: :soapenv,namespace_identifier:    :web, wsdl:'http://www3.experian.co.za/webservice/getreport.asmx?wsdl')
xml = '<![CDATA[<InputData>test data in beteween </InputData>]]>'
message = {
"Input" => xml
}
response = client.call(:get_report,:message => message)

请求我想创建: -

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://localhost/WebService/">
   <soapenv:Header/>
   <soapenv:Body>
      <web:GetReport>
         <!--Optional:-->
         <web:Input><![CDATA[<InputData>(Text data in between)</InputData>]]></web:Input>
      </web:GetReport>
   </soapenv:Body>
</soapenv:Envelope>

我已经使用soapui工具对其进行了测试,我得到了正确的响应,但没有使用savon ruby​​客户端。

1 个答案:

答案 0 :(得分:0)

你可以使用Gyoku来逃避CDATA中的角色。

https://github.com/savonrb/gyoku/blob/master/README.md

消息Gyoku.xml(数据:“&lt; / body&gt;&lt; / xml&gt;]]&gt;”