通过使用Axis 1.6和SOAP,我正在实现一个Web服务服务器,该服务器接收zip文件并将其存储在数据库中。作为测试我的软件的客户端,我正在使用soapUI项目。
我有以下请求肥皂信封的片段:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://xml.company.com/common" xmlns:nms="http://xml.company.com/schem" xmlns:xm="http://www.w3.org/2005/05/xmlmime">
<soapenv:Body>
<nms:executeRepo><com:location>
<com:space>dokumentsinput</com:space></com:location>
<nms:payload>
<nms:datastream id="1">
<nms:stream contentType=""><xop:Include href="cid:document.zip" xmlns:xop="http://www.w3.org/2004/08/xop/include"/></nms:stream>
</nms:datastream>
</nms:payload>
</nms:executeRepo>
</soapenv:Body>
</soapenv:Envelope>
问题是,当我不放置任何空格或在元素<nms:executeRepo>
和<com:location>
之间输入内容时(就像摘要中一样),出现以下错误:
javax.xml.stream.XMLStreamException:预期发生CHARACTER事件
当我放置一个空格/输入或完全删除datastream
元素时,该问题已解决。当我尝试附加xop:Include时,为什么在<nms:executeRepo>
和<com:location>
之间需要空格/输入?我发现,使用xop:Include时,轴将使用MTOMStaXSoapModelBuilder。如果没有xop:Include,则使用StAXSOAPModelBuilder。当这两个元素之间没有空格/输入时,为什么MTOM Builder有问题?
我还有另一个问题。使用<xop:Include .../>
元素时,是否可以在该元素周围放置任何白色符号?当我尝试在“ stream”和“ xop:Include”元素之间放置空格时,也会出现错误。