繁体   English   中英

从 getWebServiceTemplate().marshalSendAndReceive() 在 Spring-WS 中获取 byte[] 响应

[英]Get byte[] response from getWebServiceTemplate().marshalSendAndReceive() in Spring-WS

在目标 WebService 中,响应只有xs:base64binary并且 JAXB 不会生成响应类型。 在我的调用中:

public Object signMessage(SigningRequestType request) {
        JAXBElement<SigningRequestType> jAXBElement = new ObjectFactory().createSigningRequestType(request);
        return getWebServiceTemplate().marshalSendAndReceive(jAXBElement,
                new SoapActionCallback(SIGN_METHOD_ACTION));
}

返回Object ,我不能简单地转换为byte[]或序列化它。 如何从响应中提取 byteArray 结果?

UDP:补充一点信息。

ObjectFactory()方法:

@XmlElementDecl(namespace = "http://www.roskazna.ru/eb/sign/types/sgv", name = "SigningResponseType")
    public JAXBElement<byte[]> createSigningResponseType(byte[] value) {
        return new JAXBElement<byte[]>(_SigningResponseType_QNAME, byte[].class, null, ((byte[]) value));
    }

XSD:

<xs:element name="SigningResponseType" type="cst:notEmptyB64Binary"/>

帮助我的同事高级。

在这种情况下marshalSendAndReceive()实际上返回JAXBElement 所以:

public byte[] signMessage(SigningRequestType request) throws IOException {
        JAXBElement<SigningRequestType> jAXBElement 
            = new ObjectFactory().createSigningRequestType(request);

        final Object o = getWebServiceTemplate().marshalSendAndReceive(jAXBElement,
                new SoapActionCallback("http://www.roskazna.ru/eb/sign/types/sgv/Sign"));

        return (byte[]) ((JAXBElement) o).getValue();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM