2014-04-24 36 views
0

在Spring網站,仍然困惑如何從SOAP請求中提取信息讀取文檔之後。 例如,向服務器發送SOAP請求是這樣的:春WS端點提取SOAP信息

<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:user="http://www.mysite.com/user/schemas"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <user:UserRequest> 
     <!--You may enter the following 4 items in any order--> 
     <user:Key>key</user:Key> 
     <user:UserName>username</user:UserName> 
     <user:RequesterName>reqname</user:RequesterName> 
     <user:RequesterPassword>repw</user:RequesterPassword> 
     </user:UserRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

在我的服務器端創建一個端點,如:

@Endpoint 
public class UserEndpoint { 

    private static final String NAMESPACE_URI = "http://www.mysite.com/user/schemas"; 

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "UserRequest") 
    public void handleGetUserRequest() { 
//Extract here... 
    } 
} 

我應該怎麼寫提取碼嗎?

回答

0

我建議有一個看Spring WS samples代碼的想法,這取決於您使用的應用程序還有什麼。例如:HolidayEndpoint source code

0
@Endpoint("myEndpoint") 
public class MyEndpoint { 

    /** 
    * Spring-WS Endpoint 
    * @param submitSomethingRequest 
    * @param header 
    * @return SubmitSomethingResponse 
    */ 
    @PayloadRoot(namespace="http://my.namespace.org/spec/1.0.1", localPart="submitSomethingRequest") 
    @ResponsePayload 
    public SubmitSomethingResponse submitSomethingRequest(@RequestPayload SubmitSomethingRequest submitSomethingRequest, **SoapHeader header**) { 
     LOG.info("Received SOAP HEADER: " + header); 
     if(header != null) { 
      Iterator<SoapHeaderElement> hdrs = header.examineAllHeaderElements(); 
      while(hdrs.hasNext()) { 
       SoapHeaderElement hdrEle = hdrs.next(); 
       System.out.prinltn(hdrEle.getName().getPrefix() + ":" + hdrEle.getName().getLocalPart()); 
       ... //Do something here to parse DOM and extract headers you care about 
      } 
     } 
...