簡體   English   中英

調用接受Java數組或類列表的Web服務

[英]Calling a web service that accept array or list of a class in Java

我想使用C#創建一個Web服務。 在Web服務中,我有一個Web方法可以接受特定類的列表:

[DataContract]
public class CompositeType
{
    string stringValue = "Hello ";

    [DataMember]
    public string StringValue
    {
        get { return stringValue; }
        set { stringValue = value; }
    }

    [DataMember]
    public List<Product> Products { get; set; }
}

[DataContract]
public class Product
{
    [DataMember]
    public int PID { get; set; }

    [DataMember]
    public string PName { get; set; }
}

和我的網絡方法:

[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);

我想使用BasicHttpBinding發布此服務,Java用戶也可以調用它。 現在由於Java程序員不在我身邊,所以我想問一下有經驗的人:

1)Java程序員可以調用接受List<Product> Web方法嗎?

2)我應該將List更改為Array嗎?

謝謝你的貢獻

大概您的HTTP API將此序列化為JSON(或XML)。 無論哪種情況,Jackson之類的庫都可以很好地處理它,大多數REST客戶端甚至可以自動處理該部分。 遵守標准是規則,因此只要將List<Product>轉換為常規JSON數組或從常規JSON數組轉換為標准,一切都應順利進行。

JSON沒有單獨的列表類型,只有簡單的數組,因此數組或基於列表的序列化都應該等效。

需要注意的是,大多數API都使用camelCasesnake_case作為屬性,因此,您的屬性名稱(以JSON表示)應為stringValueproductspidpName

與使用Svcutil工具調用WCF的.Net客戶端一樣,大多數Java用戶都使用asis2庫,該庫是一個Web服務引擎來調用Web服務。
WebService是一種規范,任何實現它的服務都可以稱為WebService。 他們使用基於XML的SOAP消息進行通信。 他們使用WSDL描述服務細節,該細節用於生成客戶端代理類。 可以通過各種平台跨服務邊界調用WCF的原因是它也是一個Web服務。 盡管各種平台上的數據類型可能不同,但只要我們指定如何用XML表示它以及如何對其進行序列化,其他平台就可以正確地調用該服務,默認情況下,List被指定為使用一個序列化維數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM