2010-02-05 29 views
5

Będę musiał mieć możliwość odbierania tych danych xml z Java WebService i nie jestem naprawdę pewien, co eksponować w moim WebMethod, więc mogę go konsumować? To tylko podstawowe zamówienie i przedmioty. W .Net po prostu przekazałbym listę obiektów zamówienia.Zużyj xml danych przez C# Web Service

Powinienem rozszerzyć się nieco dalej. Jest to proces Oracle BPEL, który będzie musiał mapować do tej odsłoniętej usługi C# WebService. Musiałbym ujawnić OrderNumber, ItemNumber, itp. (Jak pokazano w XML). Problem, który mam, polega na tym, że mam 1 do wielu przedmiotów, itd., Więc nie mogę po prostu odsłonić podstawowych elementów (string, int).

Prawdopodobnie całkiem banalna dla większości społeczności tutaj ... po prostu nie wiesz, jak to zrobić? Wszelkie sugestie bardzo doceniane.

mógłby zrobić coś podobnego (build przedmiotu zamówienia i wydaje się, aby pokazać xml jak bym się spodziewał?)

[WebMethod] 
public static List<Orders> GetOrders(List<Orders> ordersList) 
{ 
    List<Orders oList = ordersList; 

    return oList; 
} 

XML:

<Order> 
    <OrderNumber>12345</OrderNumber> 
    <OrderDate>01/25/2010</OrderDate> 
    <OrderSource>Affiliate123</OrderSource> 
    <Items> 
    <ItemNumber>123478</ItemNumber> 
    <Qty>5</Qty> 
    <UOM>EA</UOM> 
    <Description>Test Item</Description> 
    </Items> 
</Order> 
+1

Nie rozumiem. czy mówisz o C#, Java lub JavaScript? –

+0

Czy próbujesz komunikować się z opartą na java usługą sieci Web przy użyciu usługi sieci Web opartej na języku C# ??? Metoda internetowa jest w Twojej aplikacji !! right –

+0

Jaki protokół dotyczy? –

Odpowiedz

0

Ty odpowiedziałeś na swoje pytanie. Struktura usług WWW .NET zamapuje typ zwrotu List<T> na sekwencję T na poziomie SOAP, tak jak gdybyś użył T[] (tablica T).

Kiedy napisać krótki przykładowy usługi takie jak twoje, to jest XML zwraca:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <GetOrdersResponse xmlns="http://tempuri.org/"> 
     <GetOrdersResult> 
     <Order> 
      <OrderNumber>int</OrderNumber> 
      <OrderDate>dateTime</OrderDate> 
      <OrderSource>string</OrderSource> 
      <Items> 
      <Item xsi:nil="true" /> 
      <Item xsi:nil="true" /> 
      </Items> 
     </Order> 
     <Order> 
      <OrderNumber>int</OrderNumber> 
      <OrderDate>dateTime</OrderDate> 
      <OrderSource>string</OrderSource> 
      <Items> 
      <Item xsi:nil="true" /> 
      <Item xsi:nil="true" /> 
      </Items> 
     </Order> 
     </GetOrdersResult> 
    </GetOrdersResponse> 
    </soap:Body> 
</soap:Envelope> 

Twój BPEL warstwa powinna być w stanie konsumować, że dość łatwo.

+0

Cool. Miałem nadzieję, że nie byłabym po prostu pewna, jakie jest najlepsze rozwiązanie, aby wyeksponować pola do mapowania. Dzięki. – scarpacci

0

Nie trzeba wystawiać WebMethod, ponieważ zakładam, że nie publikujesz WebService, zamiast tego korzystasz z czyjegoś WebService.

Nie jestem pewien, czy dobrze rozumiem twoje pytanie, ale jeśli zrobię to w Visual Studio, wystarczy "Dodaj Webreference" do adresu URL WebService i powinien on automatycznie utworzyć obiekty proxy .NET, możesz wtedy użyć te obiekty zużywają metody.

Cheers, Mithun

http://blog.mithunbose.com

+0

Zasadniczo to, co to jest (moje przeprosiny za nie do końca wyjaśnienie) jest proces Oracle BPEL, który będzie musiał mapować do tej ujawnionej usługi. Musiałbym więc ujawnić OrderNumber, ItemNumber itd. Problemem dla mnie jest to, że mogę mieć 1 do wielu przedmiotów, itp. – scarpacci

+0

Czy mógłbyś dać mi znać podpis WebMethod, który zużywasz? Proszę również wspomnieć o szczegółach dotyczących każdego parametru w tej metodzie i wartości zwracanej. Domyślam się, że łańcuch XML będzie wartością zwracaną? –

+0

Niestety, nie zauważyłem, że zaktualizowałeś swój post i wspomniałeś o podpisie webmethod. –