使用WP7使用WCF Rest服务

时间:2011-11-20 01:00:29

标签: wcf windows-phone-7 rest

我有一个WCF Restful Service,它返回我的iPhone和Android应用程序很好地消耗的JSON对象。这是我第一次尝试构建这样的东西,我把WP7留到了最后,因为我的背景是C#和VS2010。但似乎并不像我猜想的那样简单。

所以我猜我有三个问题:

1,我可以在WP7中使用JSON对象吗?如果是这样,有人知道教程吗? 2,如果没有,我可以使用现有服务并在WP7中建立一些新的消费合同吗?或者,

3,我是否需要建立一个全新的服务?

选项一是最理想的,但无论哪种方式,我需要为所有三种操作系统开发,所以有人知道最好的模型类型将这一切结合在一起吗??? 欢呼声,

麦克

3 个答案:

答案 0 :(得分:2)

  1. 是的,但不适用于您可能习惯使用WCF的频道工厂/代理编程模型。 REST服务通常通过使用一些更简单的类来使用,例如WebClient。您可以使用JSON库(DataContractJsonSerializer在WP7配置文件中)然后反序列化您收到的数据。即使是无类型的JSON(Silverlight上的System.Json.dll中的System.Json类),虽然没有正式出现在配置文件中,但它们也可以在WP7上工作(我见过一些人只是引用了SL WP7项目中的库。)

  2. 如果您需要代理支持,可以使用WP7支持的BasicHttpBinding向服务添加新端点;如果您不需要,请参阅1)。

  3. 没有。见1)和2)。

答案 1 :(得分:0)

尝试使用它来反序列化JSON对象:

public static T Deserialize<T>(string strData) where T : class
{
    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
    byte[] byteArray = Encoding.UTF8.GetBytes(strData);
    MemoryStream memoryStream = new MemoryStream(byteArray);
    T tRet = serializer.ReadObject(memoryStream) as T;
    memoryStream.Dispose();
    return tRet;
}

答案 2 :(得分:0)

我发现完全基于wcf的方法更有趣。

这是一个解决此问题的好帖子 http://blogs.msdn.com/b/carlosfigueira/archive/2010/04/29/consuming-rest-json-services-in-silverlight-4.aspx