2016-07-13 10 views
1

spring-wsアプリケーションのsoapリクエストからsoap bodyを抽出しようとしています。私のSOAP要求は、私は、次のコードを使用してSOAP本体を抽出しようとしたSpring-WS:Soap Message Bodyの抽出方法

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org /soap/envelope/" xmlns:sch="http://www.manager.cts.com/schema"> 
<soapenv:Header/> 
    <soapenv:Body> 
    <sch:addManagerRequest> 
     <sch:name>shivani</sch:name> 
     <sch:salary>1231231</sch:salary> 
     <sch:developer> 
      <sch:firstName>asd</sch:firstName> 
      <sch:lastName>asdasd</sch:lastName> 
      <sch:salary>123123</sch:salary> 
     </sch:developer> 
    </sch:addManagerRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

です:

@Override 
public boolean handleRequest(MessageContext messageContext, Object endpoint) throws Exception { 
    SoapMessage message = (SoapMessage) messageContext.getRequest(); 
    SoapBody soapBody = message.getSoapBody(); 

    Source bodySource = soapBody.getSource(); 
    DOMSource bodyDomSource = (DOMSource) bodySource; 

    Node bodyNode = bodyDomSource.getNode(); 
    System.out.println(bodyNode.getNodeValue()); 
    System.out.println(bodyNode.getChildNodes()); 
} 

出力は次のとおりです。

null 
[soapenv:Body: null] 

私はこの問題を解決する助けてください。私は春の初心者です

答えて

2

最高の解決策は、Jaxb unmarshal()メソッドを使用することです。

SoapMessage message = (SoapMessage) messageContext.getRequest(); 
    SoapBody soapBody = message.getSoapBody(); 
    Source bodySource = soapBody.getPayloadSource(); 
    DOMSource bodyDomSource = (DOMSource) bodySource; 

    JAXBContext context = JAXBContext.newInstance(Request.class); 
    Unmarshaller unmarshaller = context.createUnmarshaller(); 

    Request request = (Request) unmarshaller.unmarshal(bodyDomSource); 
    // populate request object. 
+0

おかげでたくさん - :あなたはファイルが正しくあなたのためのアンマーシャリングオブジェクトにJAXBを使用してマッピングされたら

@XmlRootElement(name = "name_of_request") public class Request { @XmlElement(required = true) // add this annotation for each field value protected String test; //other fields + getter and setter 

: 例 - :あなたのJavaマッピングファイルのファイルは、適切な注釈を持っている必要があります。出来た – user2332505

関連する問題