2010-02-05 36 views
5

Tôi sẽ cần để có thể nhận dữ liệu xml này từ Java WebService và tôi không thực sự chắc chắn những gì để lộ trong WebMethod của tôi để tôi có thể tiêu thụ nó? Nó chỉ là một thứ tự và vật phẩm cơ bản. Trong Net tôi sẽ chỉ cần thông qua một danh sách đối tượng đặt hàng.Tiêu thụ dữ liệu xml qua Dịch vụ Web C#

Tôi nên mở rộng thêm một chút. Nó là một quá trình Oracle BPEL cần phải ánh xạ tới C# WebService được trưng ra này. Tôi sẽ cần để lộ OrderNumber, ItemNumber, vv (như thể hiện trong XML). Vấn đề tôi gặp phải là tôi sẽ có 1 đến nhiều mục, vv vì vậy tôi không thể chỉ phơi bày các mục cơ bản (chuỗi, int).

Có lẽ khá tầm thường đối với hầu hết cộng đồng ở đây ... chỉ không chắc chắn cách thực hiện? Bất kỳ đề xuất nào được đánh giá cao.

tôi có thể làm điều gì đó tương tự (xây dựng một đối tượng tự, nó xuất hiện để hiển thị các xml như tôi mong chờ?)

[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

Tôi không hiểu. bạn có nói về C#, Java hay JavaScript không? –

+0

Bạn đang cố gắng giao tiếp với một dịch vụ Web dựa trên java bằng cách sử dụng C# dựa trên dịch vụ Web ???? Web-Phương pháp là trong ứng dụng của bạn !! phải –

+0

Giao thức nào có liên quan? –

Trả lời

0

Bạn đã trả lời câu hỏi của riêng bạn. Khuôn khổ dịch vụ web .NET sẽ ánh xạ loại trả về là List<T> thành một chuỗi T ở cấp SOAP, giống như khi bạn đã sử dụng T[] (mảng T).

Khi tôi viết lên một dịch vụ mẫu nhanh chóng giống như bạn, đây là XML nó sẽ trả về:

<?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> 

lớp BPEL của bạn sẽ có thể tiêu thụ mà khá dễ dàng.

+0

Cool. Tôi đã hy vọng rằng nó sẽ tôi chỉ không chắc chắn những gì các giải pháp tốt nhất là để tring để lộ các lĩnh vực để lập bản đồ. Cảm ơn. – scarpacci

0

Bạn không cần để lộ một WebMethod, như tôi giả sử bạn không xuất bản một WebService, thay vào đó bạn đang dùng WebService của người khác.

Tôi không chắc chắn nếu tôi hiểu câu hỏi của bạn một cách chính xác, nhưng nếu tôi làm trong Visual Studio bạn chỉ cần "Thêm Webreference" vào URL WebService và nó sẽ tự động tạo các đối tượng proxy .NET, sau đó bạn có thể sử dụng các đối tượng này để tiêu thụ các phương thức.

Chúc mừng, Mithun

http://blog.mithunbose.com

+0

Về cơ bản nó là gì (lời xin lỗi của tôi vì không giải thích đầy đủ) là một quá trình Oracle BPEL cần phải lập bản đồ cho dịch vụ tiếp xúc này. Vì vậy, tôi sẽ cần để lộ OrderNumber, ItemNumber vv Vấn đề đối với tôi là tôi có thể có 1 đến nhiều mục, vv – scarpacci

+0

Bạn có thể vui lòng cho tôi biết chữ ký của WebMethod mà bạn đang tiêu thụ. Cũng xin đề cập chi tiết nhỏ về từng tham số trên phương thức đó và giá trị trả lại. Tôi đoán chuỗi XML sẽ là giá trị trả về? –

+0

Xin lỗi tôi đã không thông báo cho bạn đã cập nhật bài đăng của bạn và đã đề cập đến chữ ký webmethod. –

Các vấn đề liên quan