gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:54:42 25 4
gpt4 key购买 nike

在目标 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();
}

关于java - 从 Spring-WS 中的 getWebServiceTemplate().marshalSendAndReceive() 获取 byte[] 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61610308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com