Использование веб-сервиса для межсайтового скриптинга - PullRequest
0 голосов
/ 20 февраля 2010

Я хочу открыть ленту новостей (например, твиттер) и разместить ее на странице с помощью JavaScript (jquery). В конечном счете, «сервис» просто должен передать JSON. Я создал веб-сервис, который позволяет мне делать это, вроде. Я не знаю, насколько эффективно использование потокового ридера, и меня немного беспокоит необходимость использовать то, что составляет 2 evals на стороне клиента.

У меня двоякий вопрос: есть ли лучший способ, чем использование веб-службы, и два, есть ли проблема с моей реализацией?

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

Ответы [ 2 ]

1 голос
/ 20 февраля 2010

2 части ответа на ваш вопрос. 1-й из всех использования

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

Это вернет строку без всех лишних строк кода.

2-й Твиттер-API - это веб-сервис, который возвращает JSON. Так что вам не нужно воссоздавать колесо. Здесь - это хорошая статья и библиотека jquery-twitter , которая позволит вам легко получить график, как это.

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

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

');  
}); 
0 голосов
/ 20 февраля 2010

Ваш код на стороне сервера на самом деле ничего не делает. Почему вы просто не вызываете API Twitter прямо с клиента?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...