C # эмулирует xmlhttprequest и получает ответ json - PullRequest
2 голосов
/ 06 января 2012

Как эмулировать xmlhttprequest и получить ответ json?

Здесь Ответ:

HTTP/1.1 200 OK
Server: nginx/1.1.7
Date: Fri, 06 Jan 2012 10:50:36 GMT
Content-Type: application/x-javascript; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding, Accept-Language,Cookie
Content-Language: ru
Content-Encoding: gzip

Здесь запрос:

GET /community/accounts/?type=table&_=1325847040822&offset=0&limit=25&order_by=name&search=Danzanus&echo=2&id=accounts_index HTTP/1.1
Host: worldoftanks.ru
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
X-Requested-With: XMLHttpRequest
X-CSRFToken: aec8c3f844e930e61e8a1b7f2a51b175
Referer: http://worldoftanks.ru/community/accounts/
Cookie: csrftoken=aec8c3f844e930e61e8a1b7f2a51b175; __utma=1.624357332.1325795055.1325812734.1325847014.4; __utmz=1.1325795055.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); csw_popup=true; csw_top=true; __utmb=1.1.10.1325847014; __utmc=1

Сайт http://worldoftanks.com/community/accounts/

GET запрос с параметрами: http://worldoftanks.ru/community/accounts/?type=table&_=1325847040822&offset=0&limit=25&order_by=name&search=Danzanus&echo=2&id=accounts_index

Мне нужен результат поиска со ссылкой на профиль пользователя. Firebug (плагин FF) показать этот ответ:

{"request_data":{"items":[{"account_url":"/community/accounts/4213704-Danzanus/","abbreviation":"","exp":514111,"name":"Danzanus","clan_url":"","owner":null,"wins":816,"created_at":"2011-11-29","id":4213704,"battles":1626}],"total_count":0,"filtered_count":1,"offset":0,"echo":2},"result":"success"}

Мне нужен только "account_url".

этот код возвращает 200 OK, но ответ нулевой:

 $.get("http://worldoftanks.ru/community/accounts", { type: "table", _: 1325811501451, offset: "0", limit: "25", order_by: "name", search: "Danzanus", echo: "3", id: "accounts_index" },
   function (data) {
       alert("Data Loaded: " + data);}

Спасибо.

1 Ответ

0 голосов
/ 06 января 2012

Если это ответ, возвращаемый веб-сервисом, вы можете просто проанализировать ответ XHR (например, в методе jQuery onsuccess, он вызывается после вызова Ajax) и получить account_url.В противном случае, если вы хотите воссоздать клиентскую часть ответа, вы должны создать свой объект JS, представляющий ответ, а затем преобразовать его в его представление JSON.Затем вы можете вызвать метод, возвращающий JSON (в данном случае getMyObjAsJSON ) из клиентского скрипта.

Вот пример

function getMyObj() {
var firstname = 'Michael'
var lastname = 'Jordan'    
return  { FirstName: firstname, LastName: lastname };}  

function getMyObjAsJSON(){
 var myObj = getMyObj();

    if (myObj == null) {
        alert("obj not created");
        return;
    }

    //it converts the object in its JSON rapresentetion
    var jsonObj = $.toJSON(myObj);
return jsonObj} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...