一、http请求

1.Http请求格式

Http请求即客户端发送给服务器的请求。该请求的内容格式如下所示:

请求首行

请求头信息

空行

请求正文,也称请求体

2.使用HttpWatch抓包工具

请求信息详细内容如下:

GET /Example03/ HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
Accept-Language: en-US,zh-CN;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
Accept-Encoding: gzip, deflate
Host: localhost:8080
Connection: Keep-Alive
Cookie: JSESSIONID=9E0C4BDEAFD1EB2B1060D69C3B96F72D

(1)首先分析其请求首行:GET  /Example03/ HTTP/1.1

GET :指的是请求方式。

/Example03 :指的是请求地址,即URL。

HTTP/1.1 :指的是协议及版本号。

(2)接着分析请求头信息,由以上请求头信息可知,请求头信息的格式如下所示:

l请求头名称

冒号

请求头值

现在我们来一一分析这些请求头,理解它们的作用:

Accept :告诉服务器当前浏览器支持的MIME类型。

Accept-Language :告诉服务器当前浏览器支持的语言环境,这里的值是en-US,zh-CN。enà表示英文,USà表示美国,zhà表示中文,CNà表示中国。

User-Agent :表示当前浏览器的类型和OS的类型,其中MSIE 8.0表示是ie浏览器,版本是8.0等。

Accept-Encoding :当前浏览器支持的数据压缩格式,有时候服务器给浏览器发送的东西很大,这时候服务器就要考虑当数据被压缩后,浏览器能不能给解压出来,那么这个请求头就是浏览器告诉服务器它能够解压的格式。

Host :浏览器请求的主机名和端口号,在这里它请求的主机是localhost,虽然后面没有显示端口号,但是你要知道这个端口号是80,它是http协议默认的端口号。

Connection :连接的方式,Keep-Alive表示的意思是连接一会。

Cookie :这是一个与cookie相关的请求头。

(3)请求信息中的空行,处于请求头和请求正文之间。

(4)以上请求信息中没有请求正文,是因为该请求方式是GET请求,而GET方式的请求信息中是没有请求正文的,我们接下来要学习POST请求有请求正文。后面我们会详细介绍请求正文。

二、http的get和post请求

在HTTP请求消息中,请求方式有GET、POST、HEAD、OPTIONS、DELETE、TRACE、PUT和CONNECT八种。而在以后们最常用的有两种请求方式:POST请求、GET请求。这两种请求方式所对应的请求协议内容略有不同,在上面中,我们已经了解了GET请求方式的请求信息,下面是Post请求。

1.POST请求

我们在浏览器地址栏上直接输入网址访问资源,这种请求方式是GET请求,超链接请求也属于GET请求,下面我们要演示的是POST请求:

(1) 创建一个web应用,名称为Example04,并在该应用中的WebRoot目录下新建一个form.html文件。

<form action="/Example04/index.jsp" method="post">
用户名:<input type="text" name="username"/></br>
密码:<input type="password" name="password"/></br>
<input type="submit" value="提交"/>
</form>

(2) 将Example04发布到Tomcat中,启动Tomcat服务器。在浏览器端地址栏上输入http://localhost:8080/Example04/form.html,并使用HttpWatch进行抓包。

(3) 在用户名文本框中输入:zhangsan,密码文本框中输入:123。再点击【提交】按钮。

(4)我们通过HttpWatch成功的抓取到form表单提交之后的请求信息。

POST /Example04/index.jsp HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
Referer: http://localhost:8080/Example04/form.html
Accept-Language: en-US,zh-CN;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 30
Connection: Keep-Alive
Cache-Control: no-cacheusername=zhangsan&password=123

(5)现在我们再抓取一段GET方式请求信息,在浏览器地址栏上输入:http://localhost:8080/Example04?username=zhangsan&password=123

(6)get请求信息

GET /Example04?username=zhangsan&password=123 HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-powerpoint, application/vnd.ms-excel, */*
Accept-Language: en-US,zh-CN;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; qdesk 2.4.1265.203; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3)
Accept-Encoding: gzip, deflate
Host: localhost:8080
Connection: Keep-Alive
Cookie: JSESSIONID=5386A9443729D7EB0B61E38A9C7CF52F

将post方式请求信息与get方式请求信息进行比较,有以下两点区别:

1.请求首行区别:请求参数的位置不同

以上两种请求方式都是带参数的请求,POST请求首行是:POST /Example04/index.jsp HTTP/1.1,GET请求首行为: GET /Example04?username=zhangsan&password=123 HTTP/1.1,其中GET请求首行中,”?”后面的是请求参数,多个请求参数之间用”&”连接。可以看出,POST请求的请求参数并不在请求首行中。

2.GET请求没有请求体,POST请求有请求体

GET请求没有请求体。从例1-2可以看出,POST请求有请求体,而且请求体的内容是从form.html页面提交过来的参数。这些参数的格式:参数名=参数值&参数名=参数值&…,get请求没有请求体,它的请求参数附加在请求首行的url后面。

三、http的响应

1.什么是HTTP响应

当服务器收到浏览器的请求后,会发送响应消息给浏览器。一个完整的响应消息主要包括响应首行、响应头信息、空行和响应正文。其中,每个部分都代表了不同的含义。下面我们会围绕HTTP响应消息的每个组成部分进行详细分析。

2.HTTP响应消息分析

下面我们通过HttpWatch抓包工具,抓取一段响应信息,然后对该信息进行分析。

(1)创建web应用Example05,将该应用发布到Tomcat服务器,启动Tomcat服务器。在浏览器地址栏输入http://localhost:8080/Example05/index.jsp。使用HttpWatch进行抓包,抓取的响应消息

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=UTF-8
Content-Length: 624
Date: Mon, 03 Nov 2014 06:37:28 GMT<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="http://localhost:8080/Example05/"><title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--></head><body>This is my JSP page. <br></body>
</html>

由响应消息内容,分析可知:

(1)响应首行:其内容是”HTTP/1.1  200  OK”

HTTP/1.1 :表示协议版本

200 :表示响应状态码,200表示响应成功。

OK :表示响应成功,对响应状态码的解释。

(2)响应头信息:类似于请求消息中的请求头,其格式和请求头信息格式一样,即响应头:响应头值。

Server响应头 :该响应头是服务器告诉浏览器,当前响应的服务类型和版本。

Content-Type响应头 :服务器告诉浏览器响应内容是什么类型,以及采用的是什么字符编码。该响应头的值现在为:text/html;charset=utf-8。说明响应信息的类型是文本类型中的html,使用的字符编码是utf-8。

Content-Length响应头 :服务器告诉浏览器,响应内容的长度,该响应内容的长度现在是624个字节。

Date响应头 :表示是服务器是在什么时候响应回浏览器,注意这里的时间是按照美国时间来计算。

(3)空行:响应头和响应体由空行连接。

(4)响应体:该响应消息的响应体是一个html文档。浏览器可以直接识别这个html文件。而我们访问的是一个jsp文件,响应回去的是一个html文件。说明服务器将该jsp翻译成了一个html,然后再响应给浏览器。

http请求,get请求和post请求体以及响应体相关推荐

  1. php 网络请求 get请求和post请求

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 代码记录 <?php header('content-type:application:json;cha ...

  2. python中的post和get请求_Get请求和Post请求

    使用 GET 方式抓取数据 请求对象是www.cntour.cn,请求方式是GET(所有在源码中的数据请求方式都是GET) 确定好请求对象和方式后,在 PyCharm 中输入以下代码:import r ...

  3. 微信小程序 数据请求 GET请求和POST请求

    在微信小程序中想要对其他接口进行数据请求,首先在[微信公众平台]中登录小程序, 微信公众平台的地址为:微信公众平台 (qq.com),在服务器域名中配置request合法域名,配置完后,在自己的微信小 ...

  4. mvc ajax get请求,springMVC 中 ajax get 请求和 post 请求的坑以及参数传递

    1, ajax 请求 无论为 post ,或者 get ,url中带有?形式的参数,后台都能以String类型变量接收,变量名称和参数名称必须一致 前台ajax: $.ajax( "prod ...

  5. iOS开发网络篇—GET请求和POST请求

      一.GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http ...

  6. JSP、Servlet中get请求和post请求的区别总结

    在学习JavaWeb最初的开始阶段,大家都会遇到HttpServlet中的doGet和doPost方法.前两天看<Head First Servlets & JSP>看到其中讲关于 ...

  7. java中的post的作用,JSP、Servlet中get请求和post请求的区别总结

    在学习JavaWeb最初的开始阶段,大家都会遇到HttpServlet中的doGet和doPost方法.前两天看<Head First Servlets & JSP>看到其中讲关于 ...

  8. 傲娇大少之——【GET请求和POST请求】

    若有来生,不婚不嫁,不孕不养,不做谁的妻,不为谁的娘. 只做自家女,养父母终老. 孑然一身,我行我素,随心所欲! ~诶,我好像不用等到来生... 关于http协议的get和post请求 get和pos ...

  9. get请求和post请求的区别(简洁易懂)

    一.GET和POST是什么? HTTP协议中的两种发送请求的方法,本质上都是在进行TCP连接. 二. GET请求和POST请求的区别是什么? GET请求参数是通过URL进行传递的,POST请求的参数包 ...

  10. HTTP 的GET请求和POST请求

    一.HTTP的请求 根据 HTTP 标准,HTTP 请求可以使用多种请求方法. HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法. HTTP1.1 新增了六种请求方法:OPT ...

最新文章

  1. html使两个按钮重叠,div按钮重叠HTML
  2. 一个古怪的VISTA网络问题解决的坎坷经历
  3. python图片分类毕业设计成果报告书_毕业设计成果报告书模板.doc
  4. lua的string.gsub初使用
  5. Spring开发环境搭建和第一个示例程序
  6. 这一领域,互联网巨头纷纷入局!
  7. Bootstrap按钮组中按钮的尺寸
  8. html设置数组的方法,js改变原数组的方法有哪些?
  9. 20道必须掌握的C++面试题
  10. 全班100名同学抽奖c语言,C语言综合设计实验-1-班级同学录程序设计.pptx
  11. Docker快速入门(一)
  12. SOLIDWORKS软件二十四年来的进化发展史
  13. 学习shell小窍门
  14. 华为手机安装APK提示“该安装包未包含任何证书”
  15. 标志Logo设计的起源和艺术特点
  16. echarts 地图自定义图标_echarts 使用 百度地图 加入自定义图标标记
  17. Excel 表格实现多列排序
  18. 2014年华为南研所校园招聘---机试+面试
  19. PCB模拟信号线与数字信号线布线技巧
  20. 计算机专业考研院校选择,怎样找到心中的牛校--关于学校的选择问题(计算机专业)...

热门文章

  1. pythonpath是什么_在PYTHONPATH中到底应该设置什么?
  2. ajax 多人聊天吧,基于Nodejs利用socket.io实现多人聊天室
  3. 辅助诊断-艾美捷髓过氧化物酶MPO(人)ELISA试剂盒
  4. 某省行政执法信息工作平台建设案例
  5. jQuery实现鼠标的移入移出
  6. 个、十、百、千、万、亿、兆、京、垓、秭、穰、沟、涧、正、载
  7. 成都奔驰原厂通风座椅加装 蔚一名车汇
  8. android和平灵敏度,和平精英:灵敏度这样调,压枪才会稳!
  9. 【笔记】apt-get update、upgrad:apt-get update只是更新了apt的资源列表,没有真正的对系统执行更新。如果需要,要使用apt-get upgrade来更新
  10. 书论23 欧阳询《用笔论》