16:56:06,477 DEBUG DOMReference:398 - Expected digest: 3BXXHthnTP9kC1YB6FPUrpnO72wNuPmWerwglakCGiY=
16:56:06,477 DEBUG DOMReference:399 - Actual digest: hesLZ/G8ekBPdFNGrxIJmxSYhhMC/BBHD6x/pHqXJt4=
16:56:06,477 DEBUG DOMXMLSignature:276 - Reference[#Body] is valid: false
我在CXF中完成了一项Web服务,我只使用javax.xml.crypto完成了一个客户端 包实用程序。在客户端,当我检查签名的有效性时,它表示有效。我在身体部分消化的地方是" 3BXXHthnTP9kC1YB6FPUrpnO72wNuPmWerwglakCGiY ="。
然后生成的SOAP消息正在发送,在Web服务端,它表示实际摘要是其他内容,但不是我在客户端获得的内容。
有人可以对此有所了解吗? 谢谢
答案 0 :(得分:0)
我正在从文件中读取SOAP消息。得到了一些非UTF8字符 包含在消化中。然而,我在摘要之前进行了规范化,这应该可以解决这类问题。代码已修改为只读UTF-8数据并修复了问题。
File attachmentFile = new File("soap_sample.xml");
FileInputStream fis = new FileInputStream(attachmentFile);
InputStreamReader isr = new InputStreamReader(fis, "UTF8");
BufferedReader in = new BufferedReader(isr);
StringBuffer buffer = new StringBuffer();
String inputLine = null;
while ((inputLine = in.readLine()) != null) {
buffer.append(inputLine);
}
InputStream is = IOUtils.toInputStream(buffer.toString(), "UTF-8");
SOAPMessage soapMessage = MessageFactory.newInstance().createMessage(new MimeHeaders(), is);