2010-02-20 102 views
0

我想拉下一個飼料(如Twitter),並使用javascript(jquery)放置在頁面上。最終,「服務」只需要交出JSON。我創建了一個Web服務,允許我這樣做,有點。我不知道使用流媒體閱讀器是否有效,而且我有點爲使用在客戶端上的2次演示而煩惱。使用跨服務器腳本的網絡服務

我的問題是雙重的:有沒有更好的方法比使用Web服務和兩個,是否有我的實現問題?

的.asmx:

[WebMethod] 
public string HelloWorld() 
{ 
    WebRequest request = WebRequest.Create("http://twitter.com/statuses/user_timeline/username.json?count=1"); 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    StreamReader reader = new StreamReader(response.GetResponseStream()); 
    string tmp = reader.ReadToEnd(); 
    response.Close(); 
    reader.Close(); 
    return tmp; 
} 

的.aspx

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script> 
<script> 
    $(document).ready(function() { 
     $.ajax({ 
      url: "WebService1.asmx/twitter", 
      type: "POST", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(obj) { 
       var t = eval(obj.d)[0].text; 
       $('div').html(t); 
      } 
     }) 
    }); 
</script> 

回答

1

2部分回答你的問題。所有的第一次使用

System.Net.WebClient client = new System.Net.WebClient(); 
string twitterFeed = client.DownloadString("http://twitter.com/statuses/user_timeline/username.json?count=1") 

這將返回字符串無代碼的所有多餘的線條。

2nd twitter twitter是一個返回json的web服務。所以你不需要重新創建輪子。 Here是一篇不錯的文章和jquery-twitter library,可讓您輕鬆獲得時間軸,就像這樣。

$.twitter.user_timeline('username', function(resp){ 
    $('body').append(' 

'+this.user.name+': '+this.text+' 

'); 
}); 
+0

第一部分是更清潔。謝謝。該jQuery圖書館會很方便,但我想包括在這個例子中的Twitter可能會分散注意力。我真的想創建一個跨域解決方案。 Twitter很簡單。但是,也許我正在推翻這一點。如果一個服務提供json,那麼客戶端庫是我所需要的嗎? – LeRoy 2010-02-20 21:33:30

+0

服務器端請求在需要身份驗證且您不希望在腳本中保留密碼的情況下非常有用。 – 2010-02-20 22:26:23

+0

我會這樣想,除了保羅說,你可能不想在你的JavaScript中存儲憑據。 – awright18 2010-02-20 23:53:26

0

您的服務器端代碼並​​沒有真正做什麼,爲什麼不直接從客戶端調用twitter API?

+0

我的印象是,我需要一個服務器組件來使請求跨域。我的計劃不僅僅是推特。 – LeRoy 2010-02-20 21:38:13