我有一个非常特殊的问题。我需要将一些签名的 XML 发送到 Web 服务。我已经实现了签名,它获取 XML,对其进行签名,然后将其发送到服务。在我的电脑上一切正常,但是当我在服务器上部署应用程序时,我开始收到响应,签名是错误的。
我尝试将文件复制到我的电脑并再次发送,结果成功了。我是否正确地认为操作系统可能以不同的格式存储文件并且这可能是导致错误的原因?我尝试在我的电脑和服务器上安装相同版本的 java,并尝试将文件保存在我的电脑上的 FAT32 分区上,但没有任何改变。
我使用 Transformer 保存文件:
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty("indent", "no");
transformer.setOutputProperty("standalone", "no");
result = new StreamResult(new FileOutputStream(newFile));
transformer.transform(new DOMSource(doc), result);
我将文件读入数据处理程序:
SendDocument sendDocument = new SendDocument();
sendDocument.setValue(new DataHandler(new ByteArrayDataSource(new FileInputStream(Util.signed(tempFolder, toSend)), "application/octet-stream")));
myService.sendDocument(sendDocument);
最佳答案
我认为这与编码有关。
在您的服务器上尝试使用 -D
参数运行并设置 file.encoding
属性。 (java -Dfile.encoding=Something
...)
关于java - windows和linux下文件的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17695069/