WCF WebAPI客户端不了解服务器类型

时间:2011-12-27 17:29:43

标签: wcf wcf-web-api

我正在关注WCF Web API chm文件的.6版本。我已经构建了我的服务,当我通过IE访问它时一切正常。但是当我创建我的控制台应用程序时,我不明白客户端如何知道“联系”类型。当然我可以添加一个参考,但世界上其他一些客户如何知道这些类型?

List<Contact> contacts = resp.Content.ReadAs<List<Contact>>();

客户如何知道Contact类的更改?谢谢。

2 个答案:

答案 0 :(得分:3)

使用基于SOAP的WCF绑定,客户端通常会从WSDL生成客户端,这将指定这些自定义类型。

然而据我所知,在基于REST的Web API世界中,没有办法做到这一点。期望制作客户的第三方客户/程序员以其他形式获得数据合同,并建立兼容的类。

换句话说,实际上没有一种自动方式。

答案 1 :(得分:1)

客户端类型中与响应类型中的属性(名称/类型)匹配的每个属性都由ReadAs&lt; T&gt;映射。

如果您的响应类型和客户端类型上有字符串属性“Name”,则正在解析其值。

您不需要参考。

更新:如果您不想在客户端使用联系人类型,可以尝试这样的事情:

var json = JsonValue.Parse(response.Content.ReadAsStringAsync().Result);

如果服务器端的联系人类型具有“名称”属性,则应该能够执行以下操作:

var name = json["Name"];

(假设您的回复是单个联系人 - 如果是List&lt; Contact&gt;“json”将是JsonArray类型 - 您应该得到一个线索...... here是一个显示JsonValue和JsonArray用法的示例)。

关于“联系方式的变化”,请阅读this