2008-11-07 271 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