0
点赞
收藏
分享

微信扫一扫

Webservice 服务请求参数xml 嵌套问题/CDATA嵌套

惠特曼 2022-03-11 阅读 113

今天在对接某政府服务平台需要使用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 文件,最终测试效果:

举报

相关推荐

0 条评论