为了响应客户端的请求,同样定义了代表响应的类: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对象的更多相关文章

  1. Django的httprequest对象和httpresponse对象

    请求一张页面时,Django把请求的metadata数据包装成一个HttpRequest对象,然后Django加载合适的view方法,把这个HttpRequest 对象作为第一个参数传给view方法. ...

  2. django HttpResponse对象

    HttpResponse对象 概述: 作用:给浏览器返回数据 HttpRequest对象是由Django创建的,HttpResponse对象是由程序员创建 用法: 不用模板,直接返回数据 语句示例:r ...

  3. Django HttpResponse对象详解

    HttpResponse对象 Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数.那么视图函数在处理完相关的逻辑后,也需要返回一个响 ...

  4. Django 10 GET和POST(HttpRequest对象,GET和POST请求,文件上传,HttpResponse对象的cookie)

    Django 10 GET和POST(HttpRequest对象,GET和POST请求,文件上传,HttpResponse对象的cookie) 一.HttpRequest对象 #HttpRequest ...

  5. Django框架之第四篇(视图层)--HttpRequest对象、HttpResponse对象、JsonResponse、CBV和FBV、文件上传

    视图层 一.视图函数 一个视图函数,简称视图,是一个简单的python函数,它接收web请求并且会返回web响应.响应可以是一张网页的html,一个重定向,或者是一张图片...任何东西都可以.无论是什 ...

  6. Django中的HttpRequsest 和Httpresponse对象

    HttpRequest对象:每一个用户请求在到达视图函数的同时,django会自动创建一个HttpRequest对象并把这个对象当做第一个参数传给要调用的views方法,HttpRequest对象里封 ...

  7. Django(十一)视图详解:基本使用、登录实例、HttpReqeust对象、HttpResponse对象

    一.视图(基于类的视图) [参考]https://docs.djangoproject.com/zh-hans/3.0/topics/class-based-views/intro/ 1)视图的功能 ...

  8. 106.HttpResponse对象详解

    HttpResponse对象 Django服务器接收到客户端发送过来的请求之后,会将提交上来的这些数据封装成一个HttpResquest对象传给视图函数.那么视图函数在处理完成相关的逻辑后,也需要返回 ...

  9. Django框架(九):视图(二) HttpRequest对象、HttpResponse对象

    1. HttpRequest对象 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象,这个对象不需要我们创建,直接使用服务器构造好的对象就可以.视图的第一个参数必须是HttpR ...

随机推荐

  1. 深入探索Java 8 Lambda表达式

    2014年3月,Java 8发布,Lambda表达式作为一项重要的特性随之而来.或许现在你已经在使用Lambda表达式来书写简洁灵活的代码.比如,你可以使用Lambda表达式和新增的流相关的API,完 ...

  2. 『片段』OracleHelper (支持 多条SQL语句)

    C# 调用 Oracle 是如此尴尬 >System.Data.OracleClient.dll —— .Net 自带的 已经 过时作废. >要链接 Oracle 服务器,必须在 本机安装 ...

  3. Android Studio配置Git及Git文件状态说明

    Android Studio配置Git还是比较简单的,麻烦的是可能中间出现各种问题.如果你想了解或感兴趣,请往下看. 首先你得下载Git客户端,网址:http://git-scm.com/downlo ...

  4. 变量监控 指令 gt-wach

    index8.html <html><head> <title>变量监控指令 gt-watch</title> <script src=" ...

  5. js判断页面点击事件

    <input type="submit" name="sb1" id="sb1" onclick="queryclick() ...

  6. [CH#58解题报告]

    题目:http://206.contesthunter.org/contest/CH%20Round%20%2358%20-%20OrzCC%E6%9D%AFnoip%E6%A8%A1%E6%8B%9 ...

  7. Sping MVC-创建HelloWeb项目(一)

    下面的例子显示怎样使用Spring MVC框架写一个简单的基于Web的应用程序,使用Eclipse IDE作为开发工具,按照下面的步骤使用Spring Web框架来开发一个动态的Web应用 步骤 描述 ...

  8. yii2URL美化

    yii2的url 域名/index.php?r=site%2Findex 实际为 域名/index.php?r=site/index 可以美化下 可以在main.php中配置 'components' ...

  9. 16.(转) Android之Support v4、v7、v13的区别和应用场景

    我们在项目中经常会碰到Android Support v4.v7和v13包兼容问题,所以有必要梳理下这些东西. google提供了Android Support Library package 系列的 ...

  10. 13. (转) Android一些布局属性详解

    RelativeLayout用到的一些重要的属性: 第一类:属性值为true或false     android:layout_centerHrizontal  水平居中      android:l ...