ASP.NET本质论第一章网站应用程序学习笔记3-对象化的Http
在.NET环境下,万物皆对象,在HttpRuntime收到请求之后,立即将通过HttpWorkerRequest传递的参数进行分析和分解,创建方便用于网站应用程序处理用的对象,其中主要涉及到两个对象类型:HttpRequest类型和HttpResponse类型。
1 请求参数的对象类型 HttpRequest
1) 对于每一个请求参数,HttpRuntime将创建一个类型为HttpRequest的对象实例,这个类型定义在命名空间System.Web中,定义如下:
public sealed class HttpRequest
2) HttpRequest的属性查看网址:http://msdn.microsoft.com/zh-cn/library/system.web.httprequest(v=vs.100).aspx
2 处理回应的对象类型 HttpResponse
1) 为了向客户端返回请求的回应内容,同样定义代表回应的类型:HttpResponse类,他也是定义在System.Web命名空间下,提供向客户端回应的方法和属性,定义如下:
public sealed class HttpResponse
2) HttpResponse的属性查看网址:http://msdn.microsoft.com/zh-cn/library/system.web.httpresponse(v=vs.110).aspx
3) 注解:在使用HTTP下载的时候,需要设置Content-Disposition回应头,但是,在HttpResponse中并没有对应的属性,那么我们可以通过这个方法完成:
this.Response.AddHeader("Content-Disposition","attachment;filename:download.zip");
3.辅助的常用工具类HttpServerUtility
1)除了上面我们介绍的两个类之外,在ASP.NET服务器还提供了一个辅助工具类HttpServerUtility。关于此类的属性查看网址是:
http://msdn.microsoft.com/zh-cn/LIBRARY/system.web.httpserverutility.ASPX
4.编码和解码
在Web开发中,编码与解码涉及几个不同的场景,有的用于HTML的编码和解码,也有的用于URL的编码和解码,在不同的场景下都有一些符号不能直接使用,这些问题通过编码和解码来解决。
1) HTML编码与解码
a. HtmlEncode 方法用于对文本中的<、>、"、&等字符进行编码,以避免与HTML的标记发生冲突,导致文本内容被浏览器解释为网页标记。
b. HtmlDecode方法是将编码过得文本内容进行解码。
2) URL编码和解码
a. URL编码要做的就是将URL转换为有效的ASCII字符格式。用法类似于HTML的编码和解码,方法如下:URLEncode,URLDecode。
3) URL Path编码和解码
a. UrlPathEncode 仅仅编码Url的Path部分。在通过HTTP下载的时候,我们会遇到下载的文件是乱码的情况,这就是由于没有正确编码造成的,我们可以使用这个属性里对要下载的文件进行编码。
4) UrlToken编码和解码
5.浏览器类型
1) 在HTTP协议中,通过User-Agent请求头来说明用户浏览器的类型,操作系统,浏览器内核等信息的标示。
2) HttpBrowserCapabilities 提供了大量的只读属性,通过这些属性我们可以获得关于浏览器的能力特征,滚与这个类的参考资料:
http://msdn.microsoft.com/zh-cn/library/system.web.httpbrowsercapabilities(v=vs.110).aspx
ASP.NET本质论第一章网站应用程序学习笔记3-对象化的Http的更多相关文章
- ASP.NET本质论第一章网站应用程序学习笔记2
1.初步走进ASP.NET 上篇笔记我们讲述了服务器监听问题,这篇我们就要讲述具体的请求处理了,ASP.NET所涉及的类大多数定义在System.Web程序集中. 在.NET中,程序集管理的最小逻辑单 ...
- ASP.NET本质论第一章网站应用程序学习笔记1
1.统一资源标示符 1) 格式:协议://主机[.端口号][绝对路径[?参数]],在Http://www.kencery.com/hyl/index/login中,http表示协议的名称,www.ke ...
- ASP.NET本质论第二章应用程序对象学习笔记1
1.请求的处理参数—上下文对象HttpContext 1) 针对每一次请求,ASP.NET将创建一个处理这次请求所使用的HttpContext对象实例,这个对象实例将用来在ASP.NET服务器的处理过 ...
- 0001-20180421-自动化第一章-python基础学习笔记
======================学习python==================介绍: python种类: cpython(*),jpython,ironpython,rubypyth ...
- 01.第一章_C++ Primer学习笔记_开始
1.2 初始输入输出 iostream库里面包含两个基础类型istream和ostream,分别表示输入流和输出流,一个流就是一个字符序列,从IO设备读出或者写入IO设备. 标准的输入输出对象 标准库 ...
- C语言编程入门之--第一章初识程序
第一章 初识程序 导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言 ...
- 《算法》第一章部分程序 part 2
▶ 书中第一章部分程序,加上自己补充的代码,包括简单的计时器,链表背包迭代器,表达式计算相关 ● 简单的计时器,分别记录墙上时间和 CPU 时间. package package01; import ...
- 《算法》第一章部分程序 part 1
▶ 书中第一章部分程序,加上自己补充的代码,包括若干种二分搜索,寻找图上连通分量数的两种算法 ● 代码,二分搜索 package package01; import java.util.Arrays; ...
- windows核心编程-第一章 对程序错误的处理
第一章-对程序错误的处理 在开始介绍Microsoft Windows 的特性之前,必须首先了解 Wi n d o w s的各个函数是如何进行错误处理的. 当调用一个Wi n d o w s函数时,它 ...
随机推荐
- dlib库使用
最近的工作中用到了dlib这个库,该库是一个机器学习的开源库,使用起来很方便,直接包含头文件即可,并且不依赖于其他库(自带图像编解码库源码).不过由于是开源的,所以bug多少有一些,我在example ...
- [转]使用Xcode 4发布App 实例操作
使用xcode 4发布app 实例操作是本文介绍的内容,不多说,我们直接进入话题. 1.iOS Provisioning Portal 和iTunes Connect 没有变,下载与安装.mobile ...
- 阿里云ubuntu环境笔记
安装jdk8 1.下载JDK 从官网下载jdk8 jdk-8u5-linux-x64.tar.gz 2.解压 $ tar -zxvf jdk-8u5-linux-x64.tar.gz 解压出来是一个j ...
- 【C语言】汉诺塔问题
之前遇见这个问题,非常费劲地理解了,并写出代码,然后过段时间,再遇见这个问题,又卡住了,如此反反复复两三次,才发现自己对递归的理解依然很肤浅.今天无聊,重温<算法:c语言实现>一书,又遇见 ...
- Rails4 中 因为secret key 引起在production环境下无法运行
错误信息 Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` ...
- MyBatis知多少(16)MyBatis映射
之前我们详细地讨论了MyBatis背后的设计理念以及iBATIS框架是如何产生的.也说明了MyBatis是一个混合型解决方案,它从处理关系数据库的其他不同方法那里借鉴了许多思想.那么MyBatis到底 ...
- 理解 JS 回调函数中的 this
任何变量或对象都有其赖以生存的上下文.如果简单地将对象理解为一段代码,那么对象处在不同的上下文,这段代码也会执行出不同的结果. 例如,我们定义一个函数 getUrl 和一个对象 pseudoWindo ...
- (转)linux内核虚拟文件系统浅析
转自http://hi.baidu.com/_kouu/item/4e9db87580328244ef1e53d0 ###### 虚拟文件系统(VFS)在我看来, "虚拟"二字主要 ...
- Python - 获取帮助信息
1- Python Manuals 自带CHM格式的Python Manuals存放在\Python<x.x>\Doc\目录下.可以在IDLE界面下按F1键或点击help选项下Python ...
- Zookeeper集群部署
一. 部署前的准备工作 保证各个主机之间能够正常通信,最好是在同一网段. 修改host文件,加入IP和主机名的映射.方法为修改/etc/hosts和etc/hostname文件,不同的Linux发行版 ...