2010-02-20 103 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