HttpResponse对象
为了响应客户端的请求,同样定义了代表响应的类:HttpResponse类,它也定义在命名空间System.Web下,提供向客户端响应的方法和属性。
HttpResponse常用属性和方法
响应对象用于向浏览器发回服务器处理的结果,这个结果是Http协议中的响应消息。这个消息中包含:状态行,头部,主体部分。
StatusCode:用于设置状态码,例如:200,500等等
StatusDescription:状态的描述信息。
Status:可以直接设置状态行的内容,例如:200 OK
对于响应的头部信息,大多数可以通过HttpResponse的属性直接设置。对于没有对应属性的头部信息,还可以通过AddHeader方法处理。这个方法接收两个字符串参数,一个回应头的名称,一个回应头所对应的值。
ContentType:响应内容的类型,设置该属性为itext\html,在输出到Http消息中对应的头部信息为Content-Type:text\html.
AddHeader方法定义如下:
//
// Summary:
// Adds an HTTP header to the output stream. System.Web.HttpResponse.AddHeader(System.String,System.String)
// is provided for compatibility with earlier versions of ASP.
//
// Parameters:
// name:
// The name of the HTTP header to add value to.
//
// value:
// The string to add to the header.
public void AddHeader(string name, string value);
例如,在使用http下载的时候,需要设置Content-Disposition回应头,但在HttpResponse中并没有对应的属性,那么可以通过下面的方式完成:
Response.AddHeader("Content-Disposition","attachment; filename=download.zip");
与HttpRequest类似,HttpResponse也有一个Cookies属性,这个属性是用来向浏览器响应Cookie的集合,每个加入到这个集合中的HttpCookie对象,将在回应头中生成一行如下的回应头:
如服务端创建HttpCookie对象加入到Cookies集合中,向浏览器输出
HttpCookie n = new HttpCookie("n", "wolfy");
HttpCookie p = new HttpCookie("p", "");
Response.Cookies.Add(n);
Response.Cookies.Add(p);
查看响应头信息

响应的内容部分是通过流来完成的,HttpResponse对象的OutputStream属性引用了输出到Http回应的输出流。
//
// Summary:
// Enables binary output to the outgoing HTTP content body.
//
// Returns:
// An IO System.IO.Stream representing the raw contents of the outgoing HTTP
// content body.
//
// Exceptions:
// System.Web.HttpException:
// OutputStream is not available.
public Stream OutputStream { get; }
多数情况下,在web开发中,服务器的处理结果是一个文本网页,Output属性指向了一个经过包装的输出流,文本类型的输出流。这样我们可以非常简单的输出文本内容。该属性的定义如下:
//
// Summary:
// Enables output of text to the outgoing HTTP response stream.
//
// Returns:
// A System.IO.TextWriter object that enables custom output to the client.
public TextWriter Output { get; set; }
对于文本内容,所使用的编码由属性ContentEncoding决定,该属性的定义如下:
//
// Summary:
// Gets or sets the HTTP character set of the output stream.
//
// Returns:
// A System.Text.Encoding object that contains information about the character
// set of the current response.
//
// Exceptions:
// System.ArgumentNullException:
// Attempted to set System.Web.HttpResponse.ContentEncoding to null.
public Encoding ContentEncoding { get; set; }
注意
在Http消息中,头部必需在主体部分的前面,所以,在已经输出主体部分之后,是不能再次输出消息头的。默认情况下,HttpResponse对输出的内容进行了缓冲,所以通过HttpResponse输出的内容并没有立即输出到http中,还可以进行修改。这个时候,是可以在使用输出流之后再次设置回应头的,但,如果关闭了HttpResponse的缓冲,那么,这样的操作将会出错。HttpResponse的BufferOutput属性是一个bool类型,用于设置是否缓冲输出的内容。
HttpResponse类还提供一些特殊的方法,以以直接返回某些特定的内容,例如,请求的重定向,根据http协议,服务器可以返回iyige状态码为302的回应通知浏览器应该向另外一个地址发出请求。回应头重的Location指出请求的地址.HttpResponse的Redirect方法,可以很方便帮我们实现这个功能,我们只需将重定向的url传给这个方法,HttpResponse返回一个状态码为302的回应,通知浏览器重定向新的Url发出请求。
HttpResponse对象的更多相关文章
- Django的httprequest对象和httpresponse对象
请求一张页面时,Django把请求的metadata数据包装成一个HttpRequest对象,然后Django加载合适的view方法,把这个HttpRequest 对象作为第一个参数传给view方法. ...
- django HttpResponse对象
HttpResponse对象 概述: 作用:给浏览器返回数据 HttpRequest对象是由Django创建的,HttpResponse对象是由程序员创建 用法: 不用模板,直接返回数据 语句示例:r ...
- Django HttpResponse对象详解
HttpResponse对象 Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数.那么视图函数在处理完相关的逻辑后,也需要返回一个响 ...
- Django 10 GET和POST(HttpRequest对象,GET和POST请求,文件上传,HttpResponse对象的cookie)
Django 10 GET和POST(HttpRequest对象,GET和POST请求,文件上传,HttpResponse对象的cookie) 一.HttpRequest对象 #HttpRequest ...
- Django框架之第四篇(视图层)--HttpRequest对象、HttpResponse对象、JsonResponse、CBV和FBV、文件上传
视图层 一.视图函数 一个视图函数,简称视图,是一个简单的python函数,它接收web请求并且会返回web响应.响应可以是一张网页的html,一个重定向,或者是一张图片...任何东西都可以.无论是什 ...
- Django中的HttpRequsest 和Httpresponse对象
HttpRequest对象:每一个用户请求在到达视图函数的同时,django会自动创建一个HttpRequest对象并把这个对象当做第一个参数传给要调用的views方法,HttpRequest对象里封 ...
- Django(十一)视图详解:基本使用、登录实例、HttpReqeust对象、HttpResponse对象
一.视图(基于类的视图) [参考]https://docs.djangoproject.com/zh-hans/3.0/topics/class-based-views/intro/ 1)视图的功能 ...
- 106.HttpResponse对象详解
HttpResponse对象 Django服务器接收到客户端发送过来的请求之后,会将提交上来的这些数据封装成一个HttpResquest对象传给视图函数.那么视图函数在处理完成相关的逻辑后,也需要返回 ...
- Django框架(九):视图(二) HttpRequest对象、HttpResponse对象
1. HttpRequest对象 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象,这个对象不需要我们创建,直接使用服务器构造好的对象就可以.视图的第一个参数必须是HttpR ...
随机推荐
- JavaScript系列:《JavaScript高级程序设计》,chapter2, 在html中使用JavaScript
2.1.2 延迟脚本 指的是defer属性,且只适用于外部脚本,也就是有defer属性的脚本. 由于各种延迟浏览器对延迟脚本的支持不统一,且在html5之后也不再支持defer属性,所 ...
- Java学习笔记(六)——google java编程风格指南(下)
[前面的话] 年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油.好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自 ...
- 微信小程序全面实战,架构设计 && 躲坑攻略(小程序入门捷径教程)
最近集中开发了两款微信小程序,分别是好奇心日历(每天一条辞典+一个小投票)和好奇心日报(轻量版),直接上图: Paste_Image.png 本文将结合具体的实战经验,主要介绍微信小程序的基础知识.开 ...
- VC6.0读取Excel文件数据
啰嗦一下:本人所在公司从事碟式斯特林太阳能发电设备的研发与销售.单台设备图如下: 工作原理如下:整个设备大致可分为五个部分, 1.服务器,负责气象.发电等数据存取,电.网连接等处理: 2.气象站,通过 ...
- .NET 关键字
一.base关键字 可以通过base关键字访问上一级父类方法的访问.静态static函数无法调用base 二.new 关键字new new有2个作用. new运算符 用来分配内存空间和初始化对象. ...
- JavaScript表单处理(下)
内容提纲: 1.文本框脚本 2.选择框脚本 发文不易,转载请亲注明链接出处,谢谢! 一.文本框脚本 在HTML中,有两种方式来表现文本框: 一种是单行文本框<input type=" ...
- 第十八课:js样式操作需要注意的问题
样式分为,外部样式(<link />),内部样式(<style></style>),行内样式(style:).再加上一个important对选择器权重的干扰. 大体 ...
- jQuery基础之(五)jQuery自定义添加"$"与解决"$"的冲突
1.自定义添加$ 从上面四篇文章我们看到jQuery的强大,但无论如何,jQuery都不可能满足所有用户的需求,而且有一些需求十分小众,也不适合放到整个jQuery框架中,正是因为这一点,jQuery ...
- “耐撕”团队 2016.04.06 站立会议
1. 时间:20:00--20:20 共计20分钟. 2. 成员: Z 郑蕊 * 组长 (博客:http://www.cnblogs.com/zhengrui0452/), P 濮成林(博客:http ...
- OC基础--OC中的类方法和对象方法
PS:个人感觉跟C#的静态方法和非静态方法有点类似,仅仅是有点类似.明杰老师说过不要总跟之前学过的语言做比较,但是个人觉得,比较一下可以加深印象吧.重点是自己真的能够区分开! 一.OC中的对象方法 1 ...