我已经使用Spring Boot开发了SOAP请求,其中我的SOAP请求在"soapenv:Header"的""部分中包含自定义牧羊器.我面临着检索传递到""部分中的详细信息的问题.没有例外,但我收到的都是后端RequestHeader对象的空属性值
我的SOAP请求如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://com/schema/OrderRequest" xmlns:ns="http://com/schema/RequestHeader">
<soapenv:Header>
<ns:RequestHeader>
<ns:name>Name1</ns:name>
</ns:RequestHeader>>
</soapenv:Header>
<soapenv:Body>
.... no issue to retrieve body information
</soapenv:Body>
</soapenv:Envelope>
我try 使用以下代码检索标题部分
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "OrderRequest")
@ResponsePayload
public JAXBElement<OrderResponse> createOrder(@RequestPayload JAXBElement<OrderRequest>
createWorkOrderRequestCplxType, @SoapHeader("{http://com/schema/RequestHeader/2/0}RequestHeader")SoapHeaderElement requestHeader) {
log.info("Start createWorkOrder :");
try{
Source bodySource = requestHeader.getSource();
DOMSource bodyDomSource = (DOMSource) bodySource;
JAXBContext context = JAXBContext.newInstance(RequestHeader.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
RequestHeader requestH = (RequestHeader) unmarshaller.unmarshal(bodyDomSource);
log.info("activity name from request header : {}",requestH.getName); //This value is getting empty
}catch (JAXBException e){
e.printStackTrace();
}
}
你能帮我弄明白我做错了什么吗?