2010-10-26 155 views

回答

1

我使用Hammock取得了很多成功,特別是在需要OAuth之類的東西時。

0

你不需要一個庫。 REST只是基於HTTP協議的初衷,並且由.NET框架中的類支持。

您可以使用HttpWebRequestWebClient類來發出請求。

1

你究竟是什麼意思?你的意思是一個圖書館「助手」,可以爲你打包REST電話RestSharp(其中supports Windows Phone)?

還是你的意思是允許設備提供REST服務(不會發生,因爲V1不支持套接字等原因)?

或者你的意思是完全不同的東西?

+0

這應該已經是一個註釋。 – 2010-12-21 16:39:19

+1

除了它提供了一個鏈接到RestSharp的答案。 – ctacke 2010-12-21 16:43:03

0

Restful-Silverlight是我創建的一個庫,用於幫助Silverlight和WP7。

的確,您可以使用HttpWebRequest和HttpWebResponse,但該庫將幫助您處理Silverlight的異步性質。您使用一個名爲AsyncDelegation的類來編排您想要異步執行的操作。我在下面包含了一些代碼,以顯示如何使用該庫從Twitter中檢索推文。來自Twitter的寧靜,Silverlight的檢索鳴叫

用法示例:

 

//silverlight 4 usage 
List<string> tweets = new List<string>(); 
var baseUri = "http://search.twitter.com/"; 

//new up asyncdelegation 
var restFacilitator = new RestFacilitator(); 
var restService = new RestService(restFacilitator, baseUri); 
var asyncDelegation = new AsyncDelegation(restFacilitator, restService, baseUri); 

//tell async delegation to perform an HTTP/GET against a URI and return a dynamic type 
asyncDelegation.Get<dynamic>(new { url = "search.json", q = "#haiku" }) 
    //when the HTTP/GET is performed, execute the following lambda against the result set. 
    .WhenFinished(
    result => 
    { 
     textBlockTweets.Text = ""; 
     //the json object returned by twitter contains a enumerable collection called results 
     tweets = (result.results as IEnumerable).Select(s => s.text as string).ToList(); 
     foreach (string tweet in tweets) 
     { 
      textBlockTweets.Text += 
      HttpUtility.HtmlDecode(tweet) + 
      Environment.NewLine + 
      Environment.NewLine; 
     } 
    }); 

asyncDelegation.Go(); 

//wp7 usage 
var baseUri = "http://search.twitter.com/"; 
var restFacilitator = new RestFacilitator(); 
var restService = new RestService(restFacilitator, baseUri); 
var asyncDelegation = new AsyncDelegation(restFacilitator, restService, baseUri); 

asyncDelegation.Get<Dictionary<string, object>>(new { url = "search.json", q = "#haiku" }) 
       .WhenFinished(
       result => 
       { 
        List<string> tweets = new List(); 
        textBlockTweets.Text = ""; 
        foreach (var tweetObject in result["results"].ToDictionaryArray()) 
        { 
         textBlockTweets.Text += 
          HttpUtility.HtmlDecode(tweetObject["text"].ToString()) + 
          Environment.NewLine + 
          Environment.NewLine; 
        } 
       }); 

asyncDelegation.Go(); 
 
相關問題