SOAP веб-сервис, как изменить пространство имен запроса - PullRequest
0 голосов
/ 22 октября 2018

У меня есть следующий запрос xml

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://uciext.ws.hw3/wsdl">
   <soapenv:Header/>
   <soapenv:Body>
      <wsdl:processOrder>
         <!--Optional:-->
         <arg0>
            <vendorCode>330029</vendorCode>
            <vendorName>My Shop</vendorName>
            <orderNumber>1000339</orderNumber>
            <!--1 or more repetitions:-->
            <wsdl:productOrder>
               <!--Optional:-->
               <productSku>111</productSku>
               <!--Optional:-->
               <productName>Kindle Fire</productName>
               <!--Optional:-->
               <orderQuantity>5</orderQuantity>
            </wsdl:productOrder>
         </arg0>
      </wsdl:processOrder>
   </soapenv:Body>
</soapenv:Envelope>

В классе java я восстанавливаю список productOrder и номер элемента равен 0.

Но если я изменю xml на

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://uciext.ws.hw3/wsdl">
   <soapenv:Header/>
   <soapenv:Body>
      <wsdl:processOrder>
         <!--Optional:-->
         <arg0>
            <vendorCode>330029</vendorCode>
            <vendorName>My Shop</vendorName>
            <orderNumber>1000339</orderNumber>
            <!--1 or more repetitions:-->
            <productOrder>
               <!--Optional:-->
               <productSku>111</productSku>
               <!--Optional:-->
               <productName>Kindle Fire</productName>
               <!--Optional:-->
               <orderQuantity>5</orderQuantity>
            </productOrder>
         </arg0>
      </wsdl:processOrder>
   </soapenv:Body>
</soapenv:Envelope>

Я получаю 1.

У меня есть следующий класс Java

@WebMethod
    OrderConfirm processOrder(@WebParam(name="arg0") Order order
            ) throws Exception;

И класс ProcessOrder

@XmlRootElement(name = "processOrder", namespace = "http://uciext.ws.hw3/wsdl")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "processOrder", namespace = "http://uciext.ws.hw3/wsdl")
public class ProcessOrder {

    @XmlElement(name = "arg0", namespace = "")
    private com.uciext.ws.hw3.service.model.order.Order arg0;

    public com.uciext.ws.hw3.service.model.order.Order getArg0() {
        return this.arg0;
    }


    public void setArg0(com.uciext.ws.hw3.service.model.order.Order arg0) {
        this.arg0 = arg0;
    }

}

Как удалить пространство имен wsdlили установить в классе Java пространство имен для wsdl?

...