调用接受Java中类的数组或列表的web服务



我想用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服务,asis2库是一个web服务引擎
WebService是一种规范,任何实现它的服务都可以称为WebService。它们使用基于XML的SOAP消息进行通信。他们使用WSDL来描述用于生成客户端代理类的服务细节。WCF之所以可以被各种平台跨服务边界调用,是因为它也是一个web服务。尽管在不同的平台上可能有不同的数据类型,但只要我们指定如何在XML中表示它以及如何序列化它,其他平台就可以正确地调用该服务。默认情况下,List被指定为使用一维数组进行序列化。

相关内容

  • 没有找到相关文章

最新更新