【问题标题】:Using a web service for cross site scripting使用 Web 服务进行跨站点脚本编写
【发布时间】:2010-02-20 00:53:45
【问题描述】:

我想拉下一个提要(如 twitter)并使用 javascript (jquery) 放置在一个页面上。最终,“服务”只需要传递 JSON。我创建了一个允许我这样做的网络服务。我不知道使用流阅读器是否那么有效,而且我对在客户端使用相当于 2 个 eval 的东西有点困扰。

我的问题是双重的:有没有比使用网络服务更好的方法和两个,我的实现有问题吗?

.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>

【问题讨论】:

    标签: asp.net jquery json web-services


    【解决方案1】:

    2 部分回答您的问题。第一个使用

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

    这将返回没有所有多余代码行的字符串。

    第二个 twitter api 是一个返回 json 的 web 服务。所以你不需要重新创建轮子。 Here 是一篇不错的文章,jquery-twitter library 可以让您轻松获得您的时间线,就像这样。

    $.twitter.user_timeline('username', function(resp) {
          $('body').append('  
            '+this.user.name+': '+this.text+'
            ');  
    });
    

    【讨论】:

    • 第一部分干净多了。谢谢。那个 jquery 库会很方便,但我想在示例中包含 twitter 可能会分散注意力。我真的在尝试创建一个跨域解决方案。 Twitter 很简单。但也许我想多了。如果一个服务提供 json,那么我需要一个客户端库是真的吗?
    • 服务器端请求在需要身份验证并且您不想在脚本中留下密码的情况下很有用。
    • 我认为是这样,除非像 Paul 说的那样,您可能不想在您的 javascript 中存储凭据。
    【解决方案2】:

    你的服务器端代码并​​没有真正做任何事情,你为什么不直接从客户端调用 twitter api?

    【讨论】:

    • 我的印象是我需要一个服务器组件才能跨域发出请求。我的计划不仅仅是推特。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-24
    • 2012-12-18
    • 1970-01-01
    • 2010-09-18
    • 2019-06-20
    • 1970-01-01
    • 2019-10-03
    相关资源
    最近更新 更多