C# 模拟 xmlhttprequest 并获取 json 响应

标签 c# ajax json xmlhttprequest

如何模拟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);}

谢谢。

最佳答案

如果这是 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} 

关于C# 模拟 xmlhttprequest 并获取 json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8757403/

相关文章:

C# 线程多次调用但运行一次

c# - 将集合绑定(bind)到 Ninject

javascript - 无法使用 AJAX 向 Laravel Controller 发送数据

javascript - 使用 php 重定向不起作用

ios - 保存动态生成的 JSON 数据与核心数据中的父 -> 子关系?

javascript - 如何在没有页面源且没有 JSON 的情况下使 AJAX 读回响应?

c# - 如何创建非矩形窗体?

c# - 代码不断吃内存

javascript - jquery ajax 响应中缺少 responseJSON

jquery - 使用 JQuery 简单保存到 JSON 文件