我正在尝试使用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)
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客户端。
答案 0 :(得分:0)
你可以使用Gyoku来逃避CDATA中的角色。
https://github.com/savonrb/gyoku/blob/master/README.md
消息Gyoku.xml(数据:“&lt; / body&gt;&lt; / xml&gt;]]&gt;”