2008-11-07 156 views
14

我对WCF并不熟悉,但我想我会在尝试使用现有服务时学习。从WCF消费REST服务

我想到的其中一个REST API是Twitter API。我想开发一个WPF客户端,它只会向某个Twitter用户输出最后5条推文。

我想知道是否有人可以简单地概述一下我需要在Visual Studio中使用这些服务,使用WCF(类,向导,代理等)。我已经知道如何使用web调用它们请求并解析返回的XML - 我真的很想看到WCF部分在工作。

在此先感谢anyoine谁帮助留学深造:)

+0

如果教育的目的,考虑WCF可能不是最合适的框架,以消耗REST API。 正确的工具,您可能在这里拿起大锤,当你需要的只是一把螺丝刀... 如果你想要一个建议,请阅读达雷尔的答案。 – 2010-01-24 11:17:28

+1

...如果您需要更多示例来说明如何为非WCF服务定义WCF合同是一件痛苦的事情,请参阅http://stackoverflow.com/questions/2180676/readasdatacontract-exception-while-reading-namespace/2180811#2180811 – 2010-02-03 15:37:15

回答

6

还有就是使用WCF消耗像Twitter的API基于HTTP API没有任何好处。 System.Net.HttpWebRequest是绰绰有余的。事实上,我怀疑你会有一些困难。当线路两端都有WCF时,WCF更容易工作。

但是,如果REST API返回Atom内容,则可以使用System.ServiceModel.Syndication类来帮助解析响应。

编辑: 自从我写这篇文章后,微软发布了一个新的HTTP客户端库的预览版,它可以更好地使用RESTful服务。
这里是你将如何使用它来张贴到Twitter:

var client = new HttpClient(); 
client.DefaultHeaders.Authorization = Credential.CreateBasic("username","password"); 
var form = new HttpUrlEncodedForm(); 
form.Add("status","Test tweet using Microsoft.Http.HttpClient"); 
var content = HttpContent.Create(form); 
var resp = client.Post("http://www.twitter.com/statuses/update.xml", content); 

如果你想在这个客户端库的更多详细信息,我在写一些博客文章关于它here的过程。

+3

而你,先生,赢得“最大错误”奖。创建DataContracts来表示远程数据,并让各种.NET序列化程序处理肮脏的工作是一个巨大的胜利 – TheSoftwareJedi 2008-11-08 01:16:15