转载 收藏于网络

1.简介:

HTTP协议:Hypertext transfer protocol 超文本 传输 协议

它是TCP/IP协议集中的一个运用层协议。

用于定义WEB浏览器和WEB服务器之间交换数据的过程和数据的格式。

2.会话方式:

1.建立链接 2.客户端发送请求到服务器 3.服务器响应 4.关闭链接

3.HTTP/1.1比HTTP/1.0的进步

1.一个ICP/IP上可以包含多个HTTP请求和响应

(这样,一个网页中的多张图片就可以在一个TCP/IP中传输 (HTTP/1.0每个图片需要建立一个TCP/IP连接) 。 但是每个单独网页文件,必须建立一个单独的TCP/IP连接)

2.多个请求和响应和同时进行。

(一个网页的单独ICP/IP连接中。发送第一次请求后,不用等待第一次响应完成,可以先发送第二次请求。)

(服务器按照客户端请求的先后顺序,回送响应结果。)

3.增加更多的请求头和响应头。 如:增加HOST请求头,可以使用主机名,表示访问服务器上面那个web站点。

4.HTTP请求消息

请求消息的结构:1.一个请求行(请求方式 请求URL HTTP版本) 2.若干消息头(可选,可以没有) 3.实体内容(GET请求没有,而且只有POST、PUT、Delete、请求才有)          消息头和实体的内容之间要用空行隔开(代表消息头结束,空行后面是实体内容。按ENTER键就可以)

5.HTTP响应消息

响应消息的结构:1.一个状态行 2.若干消息头(可选,可以没有) 3.实体内容(可以没有)          消息头和实体的内容之间要用空行隔开(代表消息头结束,空行后面是实体内容。实体内容就是网页的源代码)

6.消息头作用:

相当于服务器和浏览器之前的指令。

浏览器用消息头向服务器传递信息:1.传递自己国家的语言Accept-Language  2.把当前网页从哪个链接来访问的告诉服务器 ...

服务器告诉浏览器:1.告诉浏览器使用什么字符集显示页面 2.在客户端创建一个cookie ...

格式:名称:空格 值(多个值用,号隔开) 回车。 有些头可以出现多次。 不区分大小写,默认,每个单词首字母大写。

7.使用telnet命令测试

1.telnet localhost 80
2.按下  'CTRL+]',打开本机回显功能。
3.按回车
4.GET /a.htm HTTP/1.0 回车,再按一下回车。

HTTP/1.0中的请求案例:
GET /a.html HTTP/1.0

HTTP/1.1 200 OK
Content-Length: 16
Content-Type: text/html
Last-Modified: Tue, 16 Oct 2012 07:14:37 GMT
Accept-Ranges: bytes
ETag: "885ba7e66dabcd1:7d4"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Sat, 20 Oct 2012 07:31:58 GMT
Connection: close

var data="12345"

(var data="12345"是a.htm的网页内容)

HTTP/1.1中的请求案例(状态行后面必须加上空行 然后加上HOST才行):

GET /1.htm HTTP/1.1
HOST:

HTTP/1.1 200 OK
Content-Length: 427
Content-Type: text/html
Last-Modified: Sun, 21 Oct 2012 11:23:57 GMT
Accept-Ranges: bytes
ETag: "f82bcc8f7eafcd1:7dc"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Sun, 21 Oct 2012 11:24:33 GMT

锘?html>
<head>
    <title>Does get request can auto transfer input's para in url?</title>
</head>
<body>
    <form method="get"  action="http://127.0.0.1/Default.aspx" enctype="applicat
ion/x-www-form-urlencoded">
        UserName:<input id="txtUserName" type="text" />
        PassWord:<input id="txtPassWord" type="text" />
        <input id="Submit1" type="submit" value="submit" />
    </form>
</body>
</html>

简单请求:GET /1.htm  响应的内容:只有实体内容没有消息头等..

POST请求案例:

POST /default.aspx HTTP/1.1
HOST:
Content-Type: application/x-www-form-urlencoded
Content-Length: 35

userName=zhangsan&password=123456
HTTP/1.1 200 OK
Date: Sun, 21 Oct 2012 11:33:40 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 545

Form type can get parameter,userName:zhangsan,password:123456

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or
g/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
    <form name="form1" method="post" action="default.aspx" id="form1">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2
ODcyMjlkZJxyQVLtbVdT/S4NG8fM3Qcn72RqiNW53mCR7pPt+9kF" />

<div>
    </div>
    </form>
</body>

注意:1.Content-Type必须是application/x-www-form-urlencoded,才能获取到提交的数据。
      2.这里Content-Length计算的是传递的如果Content-Length: 35
      3.消息头和实体内容之间要空格隔开,按2次ENTER键

8 响应状态码

常见状态码:

9 通用信息头:

包括一些于被传输的实体内容没有关系的消息头。 (即能用于请求的消息头,也能用于响应的消息头)

Cacle-Control: no-cache 请求完成后,不保存缓存,下一次重新请求服务器

Connection: close 请求完成后,断开连接.不能继续发出请求。  telnet中:GET /1.htm HTTP/1.1 Host: Connection: close HTTP/1.1 200 OK......失去了跟主机的连接。

Date: 日期

Pragma: no-cache

Trailer:Date

Transfer-Encoding: chunked 分段传输

Upgrade: HTTP/2.0,SHTTP/1.3

Via: HTTP/1.1 Proxy1, HTTP/1.1 Proxy2 代理服务器

Warning: any text

10.请求头

11.实体头:

12.扩展头:

附:用Telnet测试http请求比较麻烦,Fiddler工具非常强大好用。

传递一个json对象发post请求案例:

1.打开Fiddler,点击Composer选项卡

2.下拉框选择Post

3.输入请求的URL,比如:http://localhost:49194/api/user/

4.Request Headers中输入:

Content-Type: application/json; charset=utf-8

Content-Length: 398 (这个是你要和你请求正文的字符长度一致,可以不输入,自动计算)

5.输入,Requst Boy,比如:

{"UserName":"logic5","Password":"Test1234","FirstName":"Ivan","LastName":"Chen","LastLoginDate":"2010-01-01","Email":"ivan.chen@logicsolutions.com","CreateDate":"2010-01-01","LastPasswordChangedDate":"2010-01-01","LastLockoutDate":"2010-01-01","IsLockedOut":true,"IsApproved":false,"DisableDate":"2010-01-01","IsDisable":false,"profile":{"TINs":"743222298","ProviderId":168829,"UserName":"logic5"}}

点击Execute,操作成功!

说明:本文整理自传智博客张孝祥老师的教程。 缅怀张老师!!!

转载于:https://www.cnblogs.com/llhhll/p/4721780.html

HTTP协议学习,post于get;用Fiddler测试请求相关推荐

  1. Http 协议学习笔记 (燕十三老师)

    Http 协议 重要性: 1. 无论以后用 WebService 还是用 rest 作大型架构,都离不开. WebService = Http 协议 + XML Rest = HTTP 协议 + Js ...

  2. 苹果ANCS协议学习【转】

    苹果ANCS协议学习 转自:http://www.cnblogs.com/alexcai/p/4321514.html 综述 苹果通知中心(Apple Notification Center Serv ...

  3. Servlet和HTTP请求协议-学习笔记02【Servlet_体系结构与urlpartten配置、HTTP请求协议】

    Java后端 学习路线 笔记汇总表[黑马程序员] Servlet和HTTP请求协议-学习笔记01[Servlet_快速入门-生命周期方法.Servlet_3.0注解配置.IDEA与tomcat相关配置 ...

  4. Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】

    Java后端 学习路线 笔记汇总表[黑马程序员] Servlet和HTTP请求协议-学习笔记01[Servlet_快速入门-生命周期方法.Servlet_3.0注解配置.IDEA与tomcat相关配置 ...

  5. RTMP协议学习笔记

    2019独角兽企业重金招聘Python工程师标准>>> RTMP协议学习总结 转载于:https://my.oschina.net/u/2374678/blog/746464

  6. 智能会议系统(9)---流媒体协议学习

    流媒体协议学习 一.协议篇 1. rtsp协议详解(http://www.mikewootc.com/wiki/net/protocol/rtsp.html) 2. rtp与rtcp协议详解(http ...

  7. TCP/IP协议学习(五) 基于C# Socket的C/S模型

    TCP/IP协议作为现代网络通讯的基石,内容包罗万象,直接去理解理论是比较困难的:然而通过实践先理解网络通讯的理解,在反过来理解学习TCP/IP协议栈就相对简单很多.C#通过提供的Socket API ...

  8. POP3协议学习笔记

    今日得闲,于是将POP3的学习笔记也整理出来! 互联网上的TCP/IP,POP3/SMTP等资料多如牛毛,这里只是自己一点点心得,另外对于各位网络方面的大牛请安静的路过,我可不喜欢在关公面前耍大刀.. ...

  9. CoAP协议学习笔记 1.3 用UDP工具来调试CoAP

    1 前言 CoAP的调试,目前没找到好用的工具,网上说的火狐插件现在也不能用了,多希望手头的TCP/UDP网络调试工具就可以支持. 既然CoAP是基于UDP来组包的,那肯定是可以实现. 所以这篇文章给 ...

最新文章

  1. 2013年上半年全国计算机技术与软件专业技术资格(水平)考试工作安排
  2. HanLP极致简繁转换详细讲解
  3. FreeSql.Generator命令行代码生成器是如何实现的
  4. 猫和老鼠 蓝桥杯/手速/暴力练习赛(暴力搜索)
  5. jquery根据value值php,表单php传值后jquery清除表单某项value问题
  6. 导出excel写入公式_乱码、公式出错、效率低,这些excel“事故”的解决办法来了...
  7. python自动化办公都能做什么-用 Python 自动化办公,我与大神之间的差距一下就...
  8. Bellman_Ford边上权值为任意值的单源最短路径问题(+路径打印)边集合与邻接表两种实现
  9. Camera HW组成(二十六)
  10. el-input 提示不能为空那个_dede后台发布文章的时候显示标题不能为空?
  11. nohup命令的用法
  12. scratch 大家来找茬
  13. 软考高项你想要的全在这
  14. 沪漂5年,工作这点事儿
  15. 计算机系技能大赛策划案,计算机基本技能大赛”活动策划书
  16. JavaScript过滑块 模拟鼠标拖动(验证码)滑块
  17. 在iOS当中发送电子邮件和短信
  18. uniapp中拨打电话
  19. 电信感知测试软件,智能算法在电信业务用户体验感知分析中的应用
  20. 电路分析期中测试——个人题解

热门文章

  1. googel的扩展插件导出与导入
  2. 基于朴素贝叶斯分类器的西瓜数据集 2.0 预测分类_第十章:利用Python实现朴素贝叶斯模型
  3. apache php 调优_Apache的性能优化实例(一)
  4. 计算机网络ppt_计算机网络--女娲补天
  5. 机器学习算法汇总:人工神经网络、深度学习及其它
  6. java sendredirect 参数_使用response.sendRedirect()传递隐藏参数
  7. concatenation java,Java:StringBufferConcatenation
  8. 运动目标跟踪(十九)--TLD
  9. C语言—预定义宏调试__LINE__、__func__
  10. 【汇编语言】【ARM扩展资料】数据表示