Java SpringWS端点提取SOAP信息

Java SpringWS端点提取SOAP信息,java,spring,web-services,soap,Java,Spring,Web Services,Soap,在阅读了SpringWeb站点上的文档之后,仍然对如何从SOAP请求中提取信息感到困惑。 例如,发送到服务器的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>

在阅读了SpringWeb站点上的文档之后,仍然对如何从SOAP请求中提取信息感到困惑。 例如,发送到服务器的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>

我应该如何在这里编写提取代码?

我建议看一下代码,根据您在应用程序中使用的其他内容来确定想法。例如:HolidayEndpoint。

@Endpoint(“myEndpoint”)
公共类MyEndpoint{
/**
*SpringWS端点
*@param submitSomethingRequest
*@param头
*@return submitsmetingresponse
*/
@PayloadRoot(命名空间=”http://my.namespace.org/spec/1.0.1,localPart=“submitSomethingRequest”)
@回应书
公共SubmitSomethingResponse submitSomethingRequest(@RequestPayload submitSomethingRequest submitSomethingRequest,**SoapHeader header**){
LOG.info(“收到的SOAP头:”+头);
if(标题!=null){
迭代器hdrs=header.examineAllHeaderElements();
while(hdrs.hasNext()){
SoapHeaderElement hdrEle=hdrs.next();
System.out.prinltn(hdrEle.getName().getPrefix()+”:“+hdrEle.getName().getLocalPart());
…//在这里执行一些操作来解析DOM并提取您关心的头文件
}
}
...
@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...
    }   
}
@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
            }
        }
...