Heero's Blog

Heero's Blog » ASP.NET/C#
May 25

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

  • 作者:heero
  • 时间:2010-5-25 11:05

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

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

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

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

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

HttpWebRequest request = (HttpWebRequest)HttpW

Mar 24

从表单数据创建实体对象

  • 作者:heero
  • 时间:2010-3-24 21:06

Web应用的基本流程就是通过表单提交数据到服务器,服务器端程序以这些数据建立实体对象,经过处理后更新到数据库。而从表单数据创建实体对象的过程通常是很麻烦的,必须考虑到以下几点:

  1. 创建什么类型的对象?
  2. 表单的各项数据如何映射到对象的各项属性?
  3. 提交到服务器的数据都是字符串类型的,要还原成对应属性的数据类型。

之前我就用泛型写了一个Request工具类。不过这个类仅仅是解决了第三个问题而已,而要解决前两个问题就得靠反射了。

要解决第一个问题,还得用泛型,也就是类型作为参数传入,由此得到这个通用函数的原型:

public class ReqHelper
{
  public static T GetEntity<T>()
  {
Jan 6

使用泛型打造Request工具类

  • 作者:heero
  • 时间:2010-1-6 12:29

在ASP.NET页面中可以使用Request对象获取指定参数的值,例如:

string value = Request["id"];

参数值都是string类型,但是进行处理的时候可能要转换成数字、日期等类型。

string value = Request["id"];
int id = Int32.Parse(value);

实际应用的时候还要考虑异常的情况。

string value = Request["id"];
int id;
Int32.TryParse(value, out id);

如果每个页面都这么写,显得非常麻烦,代码重复也很严重,还是封装成一个工具类吧。

public class ReqHelper
{
  public static string Get
Aug 17

使用JavaScriptSerializer进行JSON序列化

  • 作者:heero
  • 时间:2009-8-17 10:36

JSON是Javascript中常用的数据格式,然而,在.NET 2.0中没有内置序列化JSON的类,原因估计是当时Ajax尚未兴起。后来就有人写了一个Json.NET类库。.NET 3.5新增了一个把对象序列化为JSON字符串的类JavaScriptSerializer。这个类位于System.Web.Script.Serialization名字空间中(非Web项目需要添加System.Web.Extensions.dll引用),其使用方法也是非常简单的:

// 分类
public class Category
{
  public int CategoryId { get; set; } // 分类编号
  public string CategoryName { get; set; } // 分类名