[英]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都使用camelCase
或snake_case
作為屬性,因此,您的屬性名稱(以JSON表示)應為stringValue
, products
, pid
和pName
。
與使用Svcutil工具調用WCF的.Net客戶端一樣,大多數Java用戶都使用asis2庫,該庫是一個Web服務引擎來調用Web服務。
WebService是一種規范,任何實現它的服務都可以稱為WebService。 他們使用基於XML的SOAP消息進行通信。 他們使用WSDL描述服務細節,該細節用於生成客戶端代理類。 可以通過各種平台跨服務邊界調用WCF的原因是它也是一個Web服務。 盡管各種平台上的數據類型可能不同,但只要我們指定如何用XML表示它以及如何對其進行序列化,其他平台就可以正確地調用該服務,默認情況下,List被指定為使用一個序列化維數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.