SOAP Web服务如何更改请求的名称空间

时间:2018-10-22 19:24:08

标签: java xml soap request namespaces

我有以下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命名空间设置为wsdl?

0 个答案:

没有答案
相关问题