2017-12-17 29 views
0

Iava에서 SOAP 서비스로 데이터를 보내려고합니다.Java에서 하위 노드로 SOAP 메시지 생성

내 IDE - Intellij Ultimate은 두 가지 주요 클래스 인 Sale and Item과 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에서 자동 생성 된 다른 클래스)를 사용해야한다고 생각합니다.

이 요청에 항목을 어떻게 추가합니까?

+0

: 귀하의 경우, SetSaleRequest에 항목을 추가하는 구문은 다음 (비트 카운터 - 직관적으로)된다 .add (item);'. –

+0

완벽 대답 해 주면 나는 그걸로 표시 할 것입니다. –

답변

2

JAXB에 의해 생성 된 클래스는 직접 addXYZ() 메서드의 istead 목록에 액세스하기위한 getter를 제공하도록 요소 목록을 처리합니다.()`request.getItems : 일반적으로는이 같은 요소의 목록이 JAXB 생성 클래스에서 이루어집니다

request.getItems().add(item);