接下来我们看一下底下建立的类,他实现了一个关键的接口:IHttpHandler实现这个接口表明你现在将以何种方式处理外部的请求。接下来我们将焦点转向IsReusable,在ProcessRequest中有一个参数是Content,他是一个HttpContent类型,Content对象提供对于为HTTP请求提供服务的内部服务器对象(如:Request、Resonse、Session、Server)的引用。也就是可以访问我的几大服务器对象。
现在来看个简单的例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Maticsoft.BLL;
using Newtonsoft.Json;
namespace Maticsoft.Web.Header
{
/// <summary>
/// Handler1 的摘要说明
/// </summary>
public class Handler1 : IHttpHandler
{
{
string userId=context.Request["userId"];//获取用户账号
string userPwd=context.Request["userPwd"];//获取用户密码
//JsonConvert.DeserializeObject(userId);//JSON反序列化 用户账号
//JsonConvert.DeserializeObject(userPwd);//JSON反序列化密码
//{
// context.Response.Write("True");
//}
//else
//{
// context.Response.Write("False");
//}
{
context.Response.Write(JsonHelper.GetJson("True"));
}
else
{
context.Response.Write(JsonHelper.GetJson("False"));
}
}
{
get
{
return false;
}
}
}
}
其访问地址为:http://localhost:3448/header/handler1.ashx?userId=111&userPwd=111,于是页面上变会出现True,如果账号密码不为111则返回“False”
在这里用URL直接带参数请求,显然是不安全的!经过和zjl老师的指导,发现了一个不错的解决方案,那就是.Net 4.5中增加的一个新的System.Net.Http.HttpClient名字空间(在 System.Net.Http.dll 中),httpClient的用法参考http://www.cnblogs.com/TianFang/archive/2012/03/10/2389480.html。个人认为是一篇好文章
这么自己写了一个JsonHelp类,内容如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization.Json;
using System.IO;
namespace WebServ
{
public class JsonHelper
{
/// <summary>
/// 生成Json格式
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string GetJson<T>(T obj)
{
DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
using (MemoryStream stream = new MemoryStream())
{
json.WriteObject(stream, obj);
string szJson = Encoding.UTF8.GetString(stream.ToArray());
return szJson;
}
}
/// <summary>
/// 获取Json的Model
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="szJson"></param>
/// <returns></returns>
public static T ParseFromJson<T>(string szJson)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
return (T)serializer.ReadObject(ms);
}
}
}
}
这里面可以序列化字符串,集合,字典,类型!在此之前需要引用微软内部的System.Runtime.Serialization