ASP.Net核心对象HttpRequest

描述

context. Request["username"]; 通过这种方式,能够得到一个HttpRequest对象。

HttpRequest对象描述了,关于请求的相关信息,

我们可以通过这个对象,拿到我们想要的请求数据

写一个方法获取是否含有a元素

方法一:

void Test(HttpContext context)

{

  if (!string.IsNullOrEmpty(context.Request["a"]))

  {

    context.Response.Write("你好牛");

  }

}

方法二:

void tt1()

{

  HttpContext context = HttpContext.Current;

  if (!string.IsNullOrEmpty(context.Request["a"]))

  {

    context.Response.Write("你好牛11");

  }

}

<form action="Test1.ashx" method="post">

<input type="text" name="name" />

<input type="text" name="age" />

<input type="submit" />

</form>

1.post获取方法,获取通过报文体传输的参数post(get获取不到,为NULL):

注意:请求获取的参数都是字符串

string name = context.Request.Form["name"];

string age = context.Request.Form["age"];

2.get获取方法,则通过QueryString获取(post获取不到,为NULL):

string name = context.Request.QueryString["name"];

string age = context.Request.QueryString["age"];

3.不管是post还是get都可获取:

string name = context.Request["name"];

string age = context.Request["age"];

顺序从QueryString、Form、Cookies、 ServerVariables中找,第一个找到的就是(反编译验证),虽然使用Request[]的这种方式获取请求数据,效率会略有下降(几乎可忽略不计),但使用起来真心方便啊。

注意:当用get或post方法获取不到值时,string类型返回的是null,int类型返回的是0

关于请求数据的类型

请求参数获取的都是String类型数据,因为Http协议就是文本。

所以获取请求来的数据,大多需要数据转换。

通过HttpRequest对象获取一些请求信息

1)浏览器

context.Request.Browser.Browser

2)操作系统信息

context.Request.Browser.Platform

3)浏览器内核版本

context.Request.Browser.Version

4)请求报文头

//Request.Headers请求报文头

for (int i = 0; i < context.Request.Headers.AllKeys.Length; i++)

{

string key = context.Request.Headers.AllKeys[i];

string value = context.Request.Headers[key];

context.Response.Write(key + "=" + value + "\n");

}

5)获取请求方式 (GET or POST?)

context.Request.HttpMethod

6)获取请求页面文件路径(相对)

context.Request.Path

7)获取请求参数

context.Request.QueryString

8)被请求的文件的服务器上的物理路径

context.Request.PhysicalPath

9)获取用户代理

context.Request.UserAgent

10)客户端的IP地址

context.Request.UserHostAddress

11)获取客户端上次请求的url的有关信息

context.Request.UrlReferrer

12)浏览器支持什么语言

context.Request.UserLanguages)

context.Request.FilePath;//获取当前请求的虚拟路径

context.Request.Files;//获取采用多部分 MIME 格式的由客户端上载的文件的集合

context.Request.Form; //获取窗体变量集合,method为post时用此方法请求

context.Request.HttpMethod;//获取客户端使用的 HTTP 数据传输方法(如 GET、POST 或 HEAD)

context.Request.MapPath;//将指定的虚拟路径映射到物理路径

context.Request.Path;//获取当前请求的虚拟路径

context.Request.QueryString;//获取 HTTP 查询字符串变量集合,method为get时用此方法请求

context.Request.RawUrl;//获取当前请求的原始 URL

context.Request.RequestType;//获取或设置客户端使用的 HTTP 数据传输方法(GET 或 POST)

context.Request.ServerVariables;//获取 Web 服务器变量的集合

context.Request.Url;//获取有关当前请求的 URL 的信息

context.Request.UrlReferrer;//获取有关客户端上次请求的 URL 的信息,该请求链接到当前的 URL

context.Request.UserAgent;//获取客户端浏览器的原始用户代理信息

context.Request.UserHostAddress;//获取远程客户端的 IP 主机地址

context.Request.UserHostName;//获取远程客户端的 DNS 名称