[英]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.