org.dom4j.DocumentException: Error on line 1 of document : 前言中不允许有引用。——base64加解密踩坑

存在一个接收xml内容的接口,但是入参要求xml内容经过base64转码后才可以正常访问。通过前端代码对xml内容进行base64转码后请求接口,没有问题。但是在后端通过postman调试的时候,手动修改xml内容,由于入参需要base64转码,所以就使用了在线转码的网站进行转码。万万没想到在这里踩坑了,在网上随便使用了一个搜索到的在线转码网站(站长工具——不要用这个!!), 结果转码后的xml入参,直接导致接口报错:

org.dom4j.DocumentException: Error on line 1 of document  : 前言中不允许有引用。
        at org.dom4j.io.SAXReader.read(SAXReader.java:462)
        at org.dom4j.io.SAXReader.read(SAXReader.java:325)

经过一番排查发现:

相同的xml内容,在 站长工具base64转码后的内容与其他网站在线base64转码后的内容不一致!!!

探究其原因,发现站长工具在进行base64加解密时, 对 “<” 符号自动进行了转义(不确定是否还有其他符号也做过这种操作), 按照“<”进行base64加解密,从而导致与其他网站base64加解密后的结果不同。使用其他网站base64转码后,该问题解决。

使用网上的在线工具要谨慎吖!!

不同网站的base64加密:

站长工具:

org.dom4j.DocumentException: Error on line 1 of document : 前言中不允许有引用。——base64加解密踩坑_第1张图片

在线工具(https://tool.oschina.net/encrypt?type=3):

org.dom4j.DocumentException: Error on line 1 of document : 前言中不允许有引用。——base64加解密踩坑_第2张图片

在线工具对站长工具生成的base64解密:

org.dom4j.DocumentException: Error on line 1 of document : 前言中不允许有引用。——base64加解密踩坑_第3张图片

 

你可能感兴趣的:(踩坑总结)