前些天给一个项目写测试工具,这个项目用的是SOAP协议作为通讯协议,服务端是用的Apache CXF框架写的webservice。而我习惯用C++写程序,所以用gsoap的开发包来开发SOAP的协议层。以前用的是gsoap 2.7.15,一直没有出过问题。但这次发现网上已经出了2.7.17版本了。索性下来试下。一切都按以前的流程自动生成客户端代理的代码。但在联调时,CXF的服务端一直报无法解析。我仔细查看了gsoap发达的SOAP数据包,发现里面竟然变成这样:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://www.abcd.com/wsdl">
<SOAP-ENV:Body>
<ns1:EventRequest version="">
<Client>
<TerminalAddress type=""></Terminal