今天在对接某政府服务平台需要使用webservice服务进行对接,参考第三方提供的对接文档,截图如下:
<?xml version="1.0" encoding="UTF-8"?>
<ReqPacket xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header>
<requestId>402881ed491324d1014913260a410001(调用方生成)</requestId>
<from>xxxxx</from>
<instruct> ProjectCodeService.project.get(调用的接口实例)</instruct>
</Header>
<Content>
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<ProjectCodeServiceRequest>
< formTemplateUID >参数 (对象ID)</ formTemplateUID >
</ProjectCodeServiceRequest>
]]>
</Content>
</ReqPacket>
通过上述调用方参数传递的方式可以看出,这里涉及xml 嵌套/CDATA嵌套
第一步:使用SoapUI 模拟webservice 请求,按照文档要求,进行相关参数传递
?我将文档示列参数,一股脑全部拷贝至soapUI 模拟器中,点击请求得到如右截图的效果。
错误原因:没有正确处理xml 内容嵌套。
第二步:修改请求参数,处理xml内容嵌套/CDATA嵌套
?处理完XML/CDATA嵌套,但是右图还是提示相关错误信息。
造成的错误原因:格式不正确,通过在线xml 检测即可发现xml 文件存在的问题。
XML/CDATA嵌套原因:
在CDATA内部的所有内容都会被解析器忽略。一个 CDATA 部件以"<![CDATA[" 标记开始,以"]]>"标记结束。但是CDATA是不能够嵌套的。
因此CDATA嵌套导致的XML解析错误的问题,参考网上处理方式,解决这个问题只需要将"]]>"替换成"]]]]><![CDATA[>",替换后文本作为CDATA参数传入,将原CDATA识别为多个CDATA,自动连接后返回。
经过在线xml 检测,修改相关xml 文件,最终测试效果:
|