




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 1第第8 8章章 HTTPHTTP应用编程应用编程网络应用编程网络应用编程2 2网络应用编程网络应用编程 回顾回顾思考:在日常生活中思考:在日常生活中哪些场景见到过哪些场景见到过HTTP?思考:思考:是不是HTTP仅仅能用于B/S模式?B/SWeb服务器.HTTPBBBB3 3第第8 8章章 HTTPHTTP应用编程应用编程 任务任务1 1:模拟提交:模拟提交webweb请求请求 演示程序演示程序4 4第第8 8章章 HTTPHTTP应用编程应用编程任务任务2 2-模拟自动登录模拟自动登录:自动化测试自动化测试恶意攻击恶意攻击5 5第第8 8章章 HTTPHTTP应用编程应用编程任务任务3
2、 3:HTTPHTTP多线程下载多线程下载6 6第第8 8章章 HTTPHTTP应用编程应用编程8.1 HTTP8.1 HTTP简介简介8.2 8.2 HTTPHTTP编程相关类编程相关类8.3 8.3 利用利用HTTPHTTP实现多线程文件下载实现多线程文件下载7 7图图1 HTTP 1 HTTP 请求过程请求过程 HTTP(HTTP(HyperText Transfer Protocol ) )超文本超文本传输协议传输协议 8 8 HTTP/1.1 200 OKDate: Sat, 31 Dec 2005 23:59:59 GMTContent-Type: text/html;charse
3、t=ISO-8859-1Content-Length: 122Wrox HomepageFirst HTML将实际响应内容用将实际响应内容用浏览器打开观察效果?浏览器打开观察效果?9 9HTTP(HTTP(HyperText Transfer Protocol ) )全称:全称:超文本超文本传输协议传输协议 定义定义WebWeb服务器和浏览器服务器和浏览器之间传输的沟通方式之间传输的沟通方式n早期:早期:HTMLHTML文件文件n发展:音频文件、视频文件等发展:音频文件、视频文件等说明:说明:n目前常用的目前常用的HTTPHTTP协议的版本是协议的版本是Http1.1Http1.1nRFC 2
4、616RFC 2616描述了描述了HTTPHTTP协议的具体信息协议的具体信息8.1 HTTP8.1 HTTP简介简介10108.1.1 HTTP8.1.1 HTTP的特点的特点(1 1)HTTPHTTP是是无状态无状态的的(2 2)HTTPHTTP以以TCPTCP方式工作方式工作(3 3)HTTPHTTP使用使用元信息元信息作为标头作为标头11118.1.1 HTTP8.1.1 HTTP的特点的特点 HTTPHTTP是是无状态无状态的的“无状态无状态”:客户端发送一次请求后,服务器并没有:客户端发送一次请求后,服务器并没有存储关于该客户端的任何状态信息。例如:存储关于该客户端的任何状态信息。
5、例如: Public int LoginCount = 0;Public int LoginCount = 0; void Login() void Login() if(Success) if(Success) LoginCount += 1; LoginCount += 1; 解决方案解决方案: : 客户端客户端CookieCookie,服务器端,服务器端SessionSession登录成功N次后loginCouent=N?12128.1.1 HTTP8.1.1 HTTP的特点的特点 HTTPHTTP以以TCPTCP方式工作方式工作, ,不丢失数据不丢失数据, ,不乱序不乱序 非持久连接非
6、持久连接( (早期)早期) 持久连接(当前)持久连接(当前) 客户端客户端 服务器服务器 请求报文请求报文响应报文响应报文打开打开TCPTCP连接连接关闭关闭TCPTCP连接连接图图2 2 非持久连接非持久连接13138.1.1 HTTP8.1.1 HTTP的特点的特点HTTPHTTP使用元信息作为标头使用元信息作为标头HTTPHTTP通过添加标头(通过添加标头(HeaderHeader)的方式向服务器提)的方式向服务器提供本次供本次HTTPHTTP请求的相关信息,即在请求的相关信息,即在主要数据前添主要数据前添加一部分信息加一部分信息,称为元信息(,称为元信息(Metainformation
7、Metainformation)。例如,传送的对象属于哪种类型,采用的是哪种例如,传送的对象属于哪种类型,采用的是哪种编码等编码等 14148.1.2 8.1.2 HTTPHTTP的请求与响应的请求与响应本节主要内容本节主要内容请求报文格式请求报文格式响应报文格式响应报文格式请求类型请求类型演示利用演示利用HttpWatchHttpWatch软件,实时进行软件,实时进行HttpHttp协议分析协议分析。怎么看到HTTP的请求报文和响应报文?15158.1.2 HTTP8.1.2 HTTP的的请求请求与响应与响应 请求报文例子请求报文例子:空行空行 请求主题请求主题 请求行请求行 头部头部 16
8、168.1.2 HTTP8.1.2 HTTP的的请求请求与响应与响应1.HTTP1.HTTP请求:请求:客户端将客户端将HTTPHTTP请求发送到服务器时,格式如下:请求发送到服务器时,格式如下:request-linerequest-line :n请求行请求行 MethodMethod URL URL VersionVersionheadersheaders :n标头部分,说明服务器要使用的附加信息,一般由标头部分,说明服务器要使用的附加信息,一般由多行组成。多行组成。blank lineblank line : :n标头之后是一个空行标头之后是一个空行 request-bodyreques
9、t-body : :n空行之后是请求的主体,主题中可以包含任意数据空行之后是请求的主体,主题中可以包含任意数据17178.1.2 HTTP8.1.2 HTTP的的请求请求与响应与响应例子例子POSTPOST /TheStockExchange/Trading/GetStockPrice.asp /TheStockExchange/Trading/GetStockPrice.asp HTTP/1.1HTTP/1.1Host: localhostHost: localhostContent-Type: application/x-www-form-urlencodedContent-Type: a
10、pplication/x-www-form-urlencodedContent-Length: 11Content-Length: 11name=name=ProfessionalProfessional& &publisher=publisher=WileyWiley注意空行注意空行 MethodMethod URL URL VersionVersionHeadersHeadersrequest bodyrequest body注意空行注意空行 18188.1.2 HTTP8.1.2 HTTP的请求与的请求与响应响应2.HTTP2.HTTP响应响应一般格式为一般格式为: :s
11、tatus-linestatus-line: :Version Version StatusCode StatusCode DescriptionDescription headersheaders blank lineblank line response-bodyresponse-body status-linestatus-line 状态行:状态行:n所有所有HTTPHTTP响应的第一行响应的第一行n内容依次是当前内容依次是当前HTTPHTTP版本号版本号、3 3位数字组成的状位数字组成的状态码态码以及以及描述状态的短语描述状态的短语,空格空格分隔分隔19198.1.2 HTTP8.1.
12、2 HTTP的请求与的请求与响应响应 状态码的第一个数字代表当前响应的类型,规定如下。状态码的第一个数字代表当前响应的类型,规定如下。1xx 1xx 消息消息请求已被服务器接收,继续处理。请求已被服务器接收,继续处理。2xx 2xx 成功成功请求已成功被服务器接收、理解、并接受请求已成功被服务器接收、理解、并接受3xx 3xx 重定向重定向需要后续操作才能完成这一请求。需要后续操作才能完成这一请求。4xx 4xx 请求错误请求错误请求含有词法错误或者无法被执行。请求含有词法错误或者无法被执行。5xx 5xx 服务器错误服务器错误服务器处理某个正确请求时发生错误服务器处理某个正确请求时发生错误2
13、0208.1.2 HTTP8.1.2 HTTP的请求与的请求与响应响应2.HTTP2.HTTP响应响应HTTPHTTP常用状态码常用状态码21218.1.2 HTTP8.1.2 HTTP的请求与的请求与响应响应 HTTP/1.1 200 OKHTTP/1.1 200 OKDate: Date: Sat, 31 Dec 2005 23:59:59 GMTContent-Type: Content-Type: text/html;charset=ISO-8859-1Content-Length: Content-Length: 122Wrox Homepagetesttest例子例子注意空行注意空
14、行 22228.1.2 HTTP8.1.2 HTTP的请求与的请求与响应响应23238.1.2 HTTP8.1.2 HTTP的请求与响应的请求与响应3.Http3.Http请求方式请求方式(1 1)GetGet方式方式最常见的请求,表示客服端告诉服务器获取哪些资源最常见的请求,表示客服端告诉服务器获取哪些资源例如例如: :用户在用户在WebWeb浏览器上输入浏览器上输入,此时浏览器,此时浏览器向服务器发送的就是一个向服务器发送的就是一个GETGET请求,内部发送的信息如下请求,内部发送的信息如下 GET GET / / HTTP/1.1 HTTP/1.1 Host: www.Host: .cn
15、 User-Agent: User-Agent: (内容太长,此处省略)(内容太长,此处省略) Connection: Keep-Alive Connection: Keep-Alive (此处为一空行)(此处为一空行)24248.1.2 HTTP8.1.2 HTTP的请求与响应的请求与响应3.Http3.Http请求方式请求方式(1 1)GetGet方式方式提交的数据附在提交的数据附在URLURL之后(请求行)之后(请求行) 例如:例如:要要输入查询条件输入查询条件problemproblem后,点击搜索后,点击搜索那么内部发送那么内部发送的信息可能类似下面的内容:的信息可能类似下面的内容:
16、 GET /s?wd=problem&rsv_bp=0& HTTP/1.1 GET /s?wd=problem&rsv_bp=0& HTTP/1.1 Host: www. Host: .cn User-Agent: User-Agent: Connection: Keep-Alive Connection: Keep-Alive (此处为一空行)(此处为一空行) 注意注意: :只有第只有第1 1行的内容发生了变化行的内容发生了变化, ,观察地址栏?观察地址栏?25258.1.2 HTTP8.1.2 HTTP的请求与响应的请求与响应3.Http3.Http请求方式
17、请求方式(1 1)GetGet方式方式修改登录页面的表单提交方式为GET,观察地址栏26268.1.2 HTTP8.1.2 HTTP的请求与响应的请求与响应参数在地址栏中显示,参数在地址栏中显示,headerheader中的请求行中传送中的请求行中传送格式:格式:以以?分割分割URL和传输数据,和传输数据,key=value参数对之参数对之间以间以&相连相连n如数据是英文字母如数据是英文字母/ /数字,原样发送数字,原样发送n如是空格,转换为如是空格,转换为+ +n如是中文如是中文/ /其他字符,直接把字符串用其他字符,直接把字符串用BASE64BASE64加加密,密,XXXX中的中的
18、XXXX为该符号以为该符号以1616进制表示的进制表示的ASCIIASCII例如nname=hyddd&password=idontknowname=hyddd&password=idontknow27278.1.2 HTTP8.1.2 HTTP的请求与响应的请求与响应(2 2)POSTPOST请求请求用途:用途:要求服务器接收大量的信息,一般用于提要求服务器接收大量的信息,一般用于提交交FormForm表单。表单。POST VS GETPOST VS GETnGET: GET: 在在URLURL后面后面附加信息附加信息nPOSTPOST: :在请求主体中为服务器提供附加信息在
19、请求主体中为服务器提供附加信息演示:演示:n提交提交FormForm表单时分别选择表单时分别选择GETGET和和POSTPOST观察地址栏观察地址栏的变化的变化. .28288.1.2 HTTP8.1.2 HTTP的请求与响应的请求与响应(2 2)POSTPOST请求请求参数键值对存放在请求主体中,而非在地址中。例如:参数键值对存放在请求主体中,而非在地址中。例如:POST /Login.aspx HTTP/1.1POST /Login.aspx HTTP/1.1User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; WindoUser-Agent: Mo
20、zilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)ws NT 6.1; WOW64; Trident/5.0)Content-Type: application/x-www-form-urlencodedContent-Type: application/x-www-form-urlencodedHost: localhost:2207Host: localhost:2207Content-Length: 49Content-Length: 49Connection: Keep-AliveConnection
21、: Keep-Alive(此处为一空行)(此处为一空行)name=a&passwd=b&mysubmitButton=%E7%99%BB%E5%BD%95name=a&passwd=b&mysubmitButton=%E7%99%BB%E5%BD%9529298.1.2 HTTP8.1.2 HTTP的请求与响应的请求与响应HEADHEAD请求请求HEADHEAD请求获得请求获得headerheader部分。部分。因此因此HEADHEAD方法通常方法通常不单独使用不单独使用,而是和其他的请,而是和其他的请求方法一起起到求方法一起起到辅助作用辅助作用。例如:例如:一
22、些搜寻引擎使用的自动搜索机器人采用这个方法一些搜寻引擎使用的自动搜索机器人采用这个方法来获得网页的标志信息来获得网页的标志信息检查远程文件下载链接是否可用检查远程文件下载链接是否可用3030第第8 8章章 HTTPHTTP应用编程应用编程8.1 HTTP8.1 HTTP简介简介8.2 HTTP8.2 HTTP编程相关类编程相关类8.3 8.3 利用利用HTTPHTTP实现多线程文件下载实现多线程文件下载31318.2 HTTP8.2 HTTP编程相关类编程相关类 应用分析应用分析简化版的浏览器简化版的浏览器抓取页面源码抓取页面源码表单自动填入表单自动填入n模拟自动登录模拟自动登录文件上传文件上
23、传文件下载文件下载32328. 2. 4 利用利用GETGET方法提交请求的数据方法提交请求的数据例例1 1:编写程序,制作简化版本的浏览器:编写程序,制作简化版本的浏览器访问,抓取页面内容33338.2.1 WebRequest8.2.1 WebRequest类和类和HttpWebRequestHttpWebRequest类类 GET / HTTP/1.1 GET / HTTP/1.1 Host: www.Host: .cn User-Agent: User-Agent: (内容太长,此处省略)(内容太长,此处省略) Connection: Keep-AliveConnection: Kee
24、p-Alive (此处为一空行)(此处为一空行)34348.2.1 WebRequest8.2.1 WebRequest类和类和HttpWebRequestHttpWebRequest类类 WebRequest:请求请求/响应模型的抽象(响应模型的抽象(abstract)基类。)基类。用于访问用于访问Internet数据。数据。用协议不可知的方式从用协议不可知的方式从Internet请求数据。请求数据。 HttpWebRequest:是针对于是针对于HTTP的特定实现。的特定实现。该类通过该类通过HTTP和服务器交互和服务器交互HttpWebRequest WebRequest 35358.2
25、.3 Uri8.2.3 Uri类类 为了使为了使URIURI具有规范化格式,具有规范化格式,UriUri构造函数执行以下步骤。构造函数执行以下步骤。(1 1)将)将URIURI方案转换为小写。方案转换为小写。(2 2)将主机名转换为小写。)将主机名转换为小写。(3 3)移除默认端口号和空端口号。)移除默认端口号和空端口号。(4 4)移除多余的段(如)移除多余的段(如“/”/”和和“/test”/test”段)以简化段)以简化URIURI 下面的代码创建下面的代码创建UriUri类的实例,并用它来创建类的实例,并用它来创建 WebRequestWebRequestUri siteUri = Ur
26、i siteUri = new Uri(http:/ new Uri(http:/ request = WebRequest.Create(siteUri);WebRequest request = WebRequest.Create(siteUri);。36368.2.1 WebRequest8.2.1 WebRequest类和类和HttpWebRequestHttpWebRequest类类模拟模拟HTTPHTTP请求请求创建创建HttpWebRequestHttpWebRequest对象,例如对象,例如HttpWebRequest request =HttpWebRequest reque
27、st =设置相关属性,模拟设置相关属性,模拟POSTPOST或者或者GETGET方式获取数据方式获取数据request.Methed = GET;request.Methed = GET;request.UserAgent = request.UserAgent = Mozilla/5.0 (compatible; Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)“MSIE 9.0; Windows NT 6.1; Trident/5.0)“ WebRquest.Create(WebRquest.Create(“ht
28、tp:/http:/)(HttpWebRequest)(HttpWebRequest)37378.2.1 WebRequest8.2.1 WebRequest类和类和HttpWebRequestHttpWebRequest类类38388.2.2 WebResponse8.2.2 WebResponse类和类和HttpWebResponseHttpWebResponse类类模拟模拟HTTPHTTP请求请求提交请求提交请求HttpWebResponse response = HttpWebResponse response = (HttpWebResponse)request.GetRespons
29、e();(HttpWebResponse)request.GetResponse();访问响应信息访问响应信息nresponse.StatusCoderesponse.StatusCodenresponse.response.GetResponseStream();GetResponseStream();释放资源释放资源39398.2.2 WebResponse8.2.2 WebResponse类和类和HttpWebResponseHttpWebResponse类类40408.2.4 利用利用GETGET方法提交请求的数据方法提交请求的数据 例例1 1:简化版浏览器:简化版浏览器41418.2
30、.4 8.2.4 利用利用GETGET方法提交请求的数据方法提交请求的数据例例2 2:修改程序,以:修改程序,以GETGET方式提交搜索条件?方式提交搜索条件??grade=1&school=?grade=1&school=henu访问,抓取页面内容42428.2.4 利用利用GETGET方法提交请求的数据方法提交请求的数据小结小结构造构造HttpWebRequestHttpWebRequest对象对象, ,注意参数以键值对注意参数以键值对的形式,追加在的形式,追加在URLURL地址后地址后request.Methed=GETrequest.Methed=GETGetRespo
31、nseGetResponse对象,提交请求对象,提交请求获取响应流,抓取页面内容获取响应流,抓取页面内容43438.2.5 利用利用POSTPOST方法提交请求的数据方法提交请求的数据模拟登录模拟登录考虑和考虑和GET方式的不同?方式的不同?44448.2.5 利用利用POSTPOST方法提交请求的数据方法提交请求的数据 原理:原理:POSTPOST请求时,参数键值对存放在请求主体中,而非请求时,参数键值对存放在请求主体中,而非在地址中。例如:在地址中。例如:POST /Login.aspx HTTP/1.1POST /Login.aspx HTTP/1.1User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; WinUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Tride
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动合同书(供以完成一定任务为期限的市场营销专员)
- 货物运输合同纠纷代理合同
- 国际结算保函抵押外汇借贷合同
- 补偿贸易返销合同样本
- 二手车交易流程与手续办理考核试卷
- 光电仪器原理与检测技术考核试卷
- 农产品初加工的农产品加工质量控制考核试卷
- 文化产业项目对接会考核试卷
- 健身器材行业用户研究与市场细分考核试卷
- 小学生作文入门格式课件
- 提高感染性休克集束化治疗完成率工作方案
- 新员工入职工作计划与目标
- 2024直播运营必备技能:主播培训与管理
- 体温单模板完整版本
- 降低产后尿储留发生率品管圈课件
- 师带徒工作总结汇报
- 技术支持资料投标书
- 山东省汽车维修工时定额(T-SDAMTIA 0001-2023)
- 复合材料手糊成型工艺
- 2023年版《中国泌尿外科疾病诊断治疗指南》
- 2023可信数字底座白皮书
评论
0/150
提交评论