加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

webservice传递特殊字符时的解决办法

发布时间:2020-12-16 23:32:19 所属栏目:安全 来源:网络整理
导读:webservice soap报文是xml格式交互的,其中针对特殊字符传递无法解析,导致数据处理失败。 解决办法如下: 1、在发送报文之前,针对报文进行base64转码,转义后避免报文中含有特殊字符。 标准base64中是以%开头的,如果存储到数据库中,并进行查询sql中,会

webservice soap报文是xml格式交互的,其中针对特殊字符传递无法解析,导致数据处理失败。

解决办法如下:

1、在发送报文之前,针对报文进行base64转码,转义后避免报文中含有特殊字符。

标准base64中是以%开头的,如果存储到数据库中,并进行查询sql中,会解析成通配符,这样会报错。

搜索后使用改进版base64进行转码,可以规避该问题,具体度娘一下吧。

此方法的缺点是,所有客户端都需要知道解码的方式,否则无法解析。

?

?

2、在xml中,使用cdata标记特殊字符,这种方式经分析后不太好。

目前的缺点有2,一是需要针对每个特殊字符都转换一下,首先是本人不知道应该在什么使用添加<![CDATA[? ]]>,是在设置属性值的时候,还是最后生成报文的时候;?

而且使用这个的话数据中不能含有[[ ]]等字符。这样判断真麻烦,如果有知道这问题如何解决,请您指教。我也只是网络学习的。

?


3、还有研究什么对象的,没太研究,请大家讨论一下是什么意思:

通过Xml Document对象得到XML字符串返回给客户端,不能直接把XmlDocument返回给客户端,因为Java中的Xml Document对象,别的语言是无法正确解释的,我们只能返回XML 字符串: public String getAllNewSpace() { ???????? Document document = DocumentHelper.createDocument(); ???????? Element root=document.addElement( "root "); ………………………… if (null != dataset) { ???????????????? while (dataset.next()) { ???????????????????? Element user=root.addElement( "User "); ???????????????????? Element userName=user.addElement( "UserName "); ???????????????????? userName.setText(dataset.getString(1)); ???????????????????? Element userId=user.addElement( "UserId "); ???????????????????? userId.setText (dataset.getString(2)); ???????????????? } ???????????? } ???????? return document.asXML(); ???? }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读