我有一个非常奇怪的问题。我需要将一些签名的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);
答案 0 :(得分:0)
我认为这与编码有关。
在您的服务器上尝试使用-D
参数运行并设置file.encoding
属性。 (java -Dfile.encoding=Something
...)