2012-01-06 151 views
1

如何模擬xmlhttprequest並獲取json響應?C#模擬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);} 

謝謝。

回答

0

如果這是Web服務返回的響應,那麼您可以解析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} 
+0

我知道,我可以使用正則表達式,但問題解析它是 - 如何使GET請求隨着該參數,並得到響應:) – user1133341 2012-01-06 14:15:06

+0

您可以分析它作爲一個JSON對象沒有一個正則表達式!當你的ajax調用的成功函數被觸發時,你會得到一個JSON對象,而不是一個簡單的字符串!所以你會像items.account_url那樣訪問它。如果你不知道hout在這裏打電話是一個樣本:http://api.jquery.com/jQuery.get/(看看頁面的底部)。除非您完全控制Web服務的代碼,否則不能指示Web服務僅返回您的account_url。 – 2012-01-06 14:24:53

+0

看,我更新了話題。不能得到答案... dnt知道我做錯了嗎? – user1133341 2012-01-06 14:43:30