使用Java中的子节点创建肥皂消息



我想将数据发送到IAVA中的SOAP服务。

我的IDE -Intellij ultimate自动生成了两个主要类销售和项目,以及objectfactory,setSaleRequest,setSaleresponse。我已经能够创建一个销售实例,但看不到如何添加孩子 - 项目。

XML

    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:typ="urn:some.com.au/schema/common/types">
   <soap:Header/>
   <soap:Body>
      <typ:setSalesRequest>
         <!--Optional:-->
         <typ:Sale>
            <!--Optional:-->
            <typ:Table>?</typ:Table>
            <!--Optional:-->
            <typ:SalesNo>?</typ:SalesNo>
            <typ:EnteredDateTime>2017-12-17T11:02:00.000+12:00</typ:EnteredateTime>
            <typ:SaleDateTime>?</typ:SaleDateTime>
            <!--Optional:-->
            <typ:Address>?</typ:Address>
            <typ:Summary>?</typ:Summary>
         </typ:Sale>
         <!--Zero or more repetitions:-->
         <typ:Item>
            <!--Optional:-->
            <typ:ItemCode>?</typ:ItemCode>
            <!--Optional:-->
            <typ:ItemDesc>?</typ:ItemDesc>
            <!--Optional:-->
            <typ:ItemCost>?</typ:IetmCost>
         </typ:Item>
      </typ:setSalesRequest>
   </soap:Body>
</soap:Envelope>

到目前为止的代码:

    // SALE
    Sale sale = new Sale();
    sale.setTable("East");
    ...
    sale.setSalesNo("INV001");
    // ITEM
    Item item = new Item();
    item.setItemCode("ABC123");
    ...
    item.setItemCost("$12.00");
    SetSaleRequest request = new SetSaleRequest();
    SetSaleResponse response = new SetSaleResponse();
    request.setSale(sale);
    SaleService saleService = new SaleService();
    ISaleService isaleService = saleService.getWSHttpBindingIISRService();
    isaleService.setSale(request);

但是,尽管项目是XML中的SetSalesRequest的孩子,但没有添加项目的方法。

我认为我必须使用objectFactory(这是由WDSL自动生成的另一个类)。

如何将项目添加到此请求?

由jaxb句柄元素列表生成的类,因此它们为访问列表提供了一个直接 addXYZ()方法的列表。在您的情况下,用于将项目添加到SetSaleRequest的语法然后变成(有点违反直觉):

request.getItems().add(item);

相关内容

  • 没有找到相关文章

最新更新