IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

使用页面代理调用网易微博数据

Heero's Blog 2010-05-28 18:40:07 累计浏览 2,651 次
本机暂存

由于网易微博的数据还没有完全对外开放,像“我的首页”、“我的微博”的JSON数据都不能直接通过Javascript调用,而是必须先登录才能获取。因此,要想把微博数据调用到博客上,就得在后台做一个页面代理

页面代理的唯一工作就是带上已登录的Cookie发送一个Http请求,获取并输出回应内容。这个过程主要涉及到两个类,HttpWebRequestHttpWebResponse,它们都在System.Net名字空间内。

通过Firebug的网络面板可以看到,网易微博中“我的微博”数据地址如下:

http://t.163.com/statuses/user_timeline/用户名.json

先建立一个HttpWebRequest类的实例,并设置相应属性的值:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://t.163.com/statuses/user_timeline/heero.json"); // heero是我的用户名
request.Timeout = 15000; // 设置超时时间

接着就得加Cookie了。虽然网易通行证写入的Cookie很多,但是只需NTES_SESS这个就够了。在FireCookie里面找到这个Cookie,并把内容拷贝过来,添加到HttpWebRequest实例中:

request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(request.RequestUri, new Cookie("NTES_SESS", "...省略Cookie内容..."));

请求的属性设置完毕后,就可以发送请求并获取回应了,这个操作是通过HttpWebRequest类的GetResponse方法完成的:

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(response.CharacterSet));
string content = reader.ReadToEnd();

按理说这是没问题的了,但是我把content输出后,却发现那是一堆HTML代码,而非JSON数据。仔细再看一下,那段HTML代码竟然是手机微博首页。很明显,这是因为没有设置request的UserAgent而被微博服务器识别为手机客户端了。在发送请求前补上一行模拟IE7浏览器:

request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)";

这下大功告成了,只是最后别忘了关闭响应流和数据流并把数据输出。为性能着想,最好给数据设个过期时间。

reader.Close();
response.Close();

context.Response.Charset = response.CharacterSet;
context.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(2)); // 设置过期时间为两分钟
context.Response.Write(content);

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 你必须了解的Session的本质 (累计阅读 11,442)
  2. curl 命令使用cookie (累计阅读 10,018)
  3. 前端要给力之:URL应该有多长? (累计阅读 8,171)
  4. 前端开发中Cookie那些事儿 (累计阅读 7,370)
  5. 你不知道的 HTTP (累计阅读 6,512)
  6. 如何设置一个永远无法删除的Cookie (累计阅读 6,432)
  7. 在浏览器中加密Cookie (累计阅读 5,521)
  8. 网站统计:第一方Cookie和第三方Cookie (累计阅读 5,221)
  9. Cookie安全漫谈 (累计阅读 4,686)
  10. 验证码的几个常见漏洞 (累计阅读 4,355)