对象化的Http和请求对象HttpRequest

发布网友 发布时间:2022-04-23 02:23

我来回答

1个回答

热心网友 时间:2022-04-27 09:45

HttpRequest定义在命名空间System.Web下
// Summary:
// Enables ASP.NET to read the HTTP values sent by a client ring a Web request.
public sealed class HttpRequest
对于每一个请求参数,HttpRuntime将创建一个类型为HttpRequest的对象。
这个类定义了大量的属性,用于表示关于Http请求的参数。这些参数来源于工作者对象HttpWorkerRequest,但HttpRequest提供了更加简便的方式。
Http的请求消息包括三部分,分别是:请求行,请求头,请求体。
下面看一下HttpRequest的常见属性。
复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace HttpRequestDemo
{
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
//请求的类型,get或者post,可读写
sb.AppendFormat("RequestType:{0}<br/>", Request.RequestType);
//Httpq请求的方法,get,post或者head,只读
sb.AppendFormat("HttpMethod:{0}<br/>", Request.HttpMethod);
//通过工作者对象HttpWorkerRequest获取的请求原始字符串形式的Url地址
sb.AppendFormat("RawUrl:{0}<br/>", Request.RawUrl);
//System.Uri类型的请求地址
sb.AppendFormat("Url:{0}<br/>", Request.Url);
//取得导致当前请求的上一个地址
sb.AppendFormat(":{0}<br/>", Request.UrlReferrer);
//请求的虚拟路径,不包含请求参数信息
sb.AppendFormat("FilePath:{0}<br/>", Request.FilePath);
//请求的虚拟路径,通常情况下,相当于FilePath,当通过Server.Execute执行的时候,FilePath不变,而CurrentExecutionFilePath表示原来的虚拟路径。
sb.AppendFormat("CurrentExecutionFilePath:{0}<br/>", Request.CurrentExecutionFilePath);
//请求的虚拟路径,包含请求参数信息
sb.AppendFormat("Path:{0}<br/>", Request.Path);
//yi~开头的相对虚拟路径
sb.AppendFormat("AppRelativeCurrentExecutionFilePath:{0}<br/>", Request.AppRelativeCurrentExecutionFilePath);
//web应用程序所在的文件系统的目录
sb.AppendFormat("PhysicalApplicationPath:{0}<br/>", Request.PhysicalApplicationPath);
//当前请求虚拟路径所对应的文件系统路径
sb.AppendFormat("PhysicalPath:{0}<br/>", Request.PhysicalPath);
//取得url请求参数 NameValueCollection类型
foreach (string item in Request.QueryString.Keys)
{
sb.AppendFormat("QueryString:Name={0},value={1}<br/>", item, Request.QueryString[item]);
}
//客户端可以接受的类型
sb.AppendFormat("AcceptTypes:{0}<br/>", string.Join(",", Request.AcceptTypes));
//通过form表单提交的参数 NameValueCollection类型
foreach (string item in Request.Form.Keys)
{
sb.AppendFormat("Form:Name={0},value={1}<br/>", item, Request.Form[item]);
}
//请求头中的参数
foreach (string item in Request.Headers.Keys)
{
sb.AppendFormat("Headers:Name={0},value={1}<br/>", item, Request.Headers[item]);
}
//请求中的cookies
foreach (string item in Request.Cookies.Keys)
{
sb.AppendFormat("Cookies:Name={0},value={1}<br/>", item, Request.Cookies[item]);
}
//web服务器提供的参数
//foreach (string item in Request.ServerVariables.Keys)
//{
// sb.AppendFormat("ServerVariables:Name={0},value={1}<br/>", item, Request.ServerVariables[item]);
//}
//客户端上传的文件集合
foreach (HttpPostedFile item in Request.Files)
{
sb.AppendFormat("FileName:{0}<br/>", item.FileName);
}
//提供统一的方法来访问 QueryString,Form,Cookies,ServerVariables中的参数
foreach (string item in Request.Params.Keys)
{
sb.AppendFormat("Params:Name={0},value={1}<br/>", item, Request.Params[item]);
}
//主体部分
//请求主体的编码
sb.AppendFormat("ContentEncoding:{0}<br/>", Request.ContentEncoding);
//请求主体的长度
sb.AppendFormat("ContentLength:{0}<br/>", Request.ContentLength);
// 请求主体的类型
sb.AppendFormat("ContentType:{0}<br/>", Request.ContentType);
//浏览器类型
sb.AppendFormat("Browser:{0}<br/>", Request.Browser);
//用户代理,即浏览器
sb.AppendFormat("UserAgent:{0}<br/>", Request.UserAgent);
//客户端地址
sb.AppendFormat("UserHostAddress:{0}<br/>", Request.UserHostAddress);
//客户端DNS
sb.AppendFormat(":{0}<br/>", Request.UserHostName);
//客户端语言
sb.AppendFormat("UserLanguages:{0}<br/>", string.Join(",", Request.UserLanguages));
Response.Write(sb.ToString());
}
}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com