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

你的名字 2023-10-10 13:49 98阅读 0赞

今天在对接某政府服务平台需要使用webservice服务进行对接,参考第三方提供的对接文档,截图如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <ReqPacket xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  3. <Header>
  4. <requestId>402881ed491324d1014913260a410001(调用方生成)</requestId>
  5. <from>xxxxx</from>
  6. <instruct> ProjectCodeService.project.get(调用的接口实例)</instruct>
  7. </Header>
  8. <Content>
  9. <![CDATA[
  10. <?xml version="1.0" encoding="UTF-8"?>
  11. <ProjectCodeServiceRequest>
  12. < formTemplateUID >参数 (对象ID)</ formTemplateUID >
  13. </ProjectCodeServiceRequest>
  14. ]]>
  15. </Content>
  16. </ReqPacket>

通过上述调用方参数传递的方式可以看出,这里涉及xml 嵌套/CDATA嵌套

第一步:使用SoapUI 模拟webservice 请求,按照文档要求,进行相关参数传递

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5Zyo5aWL5paX55qE5aSn6YGT_size_20_color_FFFFFF_t_70_g_se_x_16

我将文档示列参数,一股脑全部拷贝至soapUI 模拟器中,点击请求得到如右截图的效果。

错误原因:没有正确处理xml 内容嵌套。

第二步:修改请求参数,处理xml内容嵌套/CDATA嵌套

watermark_type_d3F5LXplbmhlaQ_shadow_50_text_Q1NETiBA5Zyo5aWL5paX55qE5aSn6YGT_size_20_color_FFFFFF_t_70_g_se_x_16 1

处理完XML/CDATA嵌套,但是右图还是提示相关错误信息。

造成的错误原因:格式不正确,通过在线xml 检测即可发现xml 文件存在的问题。

XML/CDATA嵌套原因:

在CDATA内部的所有内容都会被解析器忽略。一个 CDATA 部件以”<![CDATA[“ 标记开始,以”]]>”标记结束。但是CDATA是不能够嵌套的。

因此CDATA嵌套导致的XML解析错误的问题,参考网上处理方式,解决这个问题只需要将”]]>”替换成”]]]]><![CDATA[>”,替换后文本作为CDATA参数传入,将原CDATA识别为多个CDATA,自动连接后返回。

经过在线xml 检测,修改相关xml 文件,最终测试效果:

发表评论

表情:
评论列表 (有 0 条评论,98人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Ajax请求嵌套Ajax请求的方法

    前段时间做项目,需要把全国省市的两个XML文件整合成一个JSON格式的数据,手写的话觉得数据太多了,而且容易出错,于是就想到了用Ajax嵌套的方法来解决,就想平时用Ajax的方

    相关 信封嵌套问题

    / 给出一些信封,每个信封用宽度和高度的整数对形式(w,h)表示,当一个信封的宽度和高度都比另外一个信封大的时候,那么就可以放进去, 请计算最多能套几层? 二维最