我已经使用 xjc 和 wsimport 工具生成了我的课程。我有一个包含我需要的所有属性和元素的对象。我有一个 SignatureType 对象,它必须包含我将发送的数据的符号。
我的根对象如下所示:
@XmlRootElement(name = "MensajePesadoFirmadoTipo")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MensajePesadoFirmadoTipo", propOrder = {
"signature"
})
public class MensajePesadoFirmadoTipo
extends MensajePesadoTipo
{
@XmlElement(name = "Signature", namespace = "http://www.w3.org/2000/09/xmldsig#", required = true)
protected SignatureType signature;
...
我正在做的过程是:填写MensajePesadoFirmadoTipo的所有信息,除了SignatureType。接下来,我解组为 xml 并使用 Java XMl Signature API。然后我再次编组并致电 WS。
我有一个签名的完整性问题,因为签名的 XML 在调用 WS 之前编组时是不一样的。
XML 签名(签名确定):
<ns1:MensajePesadoFirmadoTipo xmlns:ns1="urn:correos.es:ape.sne.datos.1.0" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" modalidad="1" ns1:idRef="idRef" ns1:idUnico="idUnico" tipo="NOTIFICACION">
...
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
...
</ds:Signature></ns1:MensajePesadoFirmadoTipo>
MARSHAL 之后的 RESULTING XML(完整性问题,de XML 发生了变化):
<ns1:MensajePesadoFirmadoTipo xmlns:ns1="urn:correos.es:ape.sne.datos.1.0" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" modalidad="1" ns1:idRef="idRef" tipo="NOTIFICACION" ns1:idUnico="idUnico">
...
<ns2:Signature>
...
</ns2:Signature>
</ns1:MensajePesadoFirmadoTipo>
我怎样才能使这个过程正常?请帮忙!!!
非常感谢!!!