【发布时间】:2020-08-11 10:45:02
【问题描述】:
首先,对不起我的英语不好!
我必须对一些 XML 文档进行数字签名以发送给智利 SII,其中包括数字签名。当我在 Windows 中的 JAVA 下开发时,我可以发送文档并获得 OK 作为响应。作为 POST 发送的文档,包括 XML 消息之前的一些标头。如果我使用 \r\n 作为换行符,则响应正常,如果我只使用 \n,我会收到 HTTP 500 响应。所以我决定使用 \r\n
下一步是将我的程序编译并打包到一个 jar 中,然后将它放在 Linux 服务器 中。 当我执行程序并发送文档时,如果我使用 \n 换行符,我会收到一个 HTTP 500 响应,这与我在 Windows 中收到的响应相同。如果我使用 \r\n,我可以发送 xml,但我从服务器收到一条错误消息:“XML 文档结构必须在同一个实体内开始和结束。” 我可以看到 Windows 中已签名的 XML 和 Linux 中已签名的 XML 之间的独特区别是 换行符。就像服务器期待 \r\n,它在 windows 中使用,但是当我在 Linux 中执行它时,它使用 \n 作为换行符。 p>
我可以在我的 java 代码中添加一些神奇的语句来强制使用 \r\n 作为换行符,即使我在 Linux 下执行它也是如此??
注意:我使用的是 java7 和加密库形成签名。
【问题讨论】:
标签: java xml linux xml-signature