安卓网络请求1————Http协议

这篇具有很好参考价值的文章主要介绍了安卓网络请求1————Http协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、目录

二、http协议简介

1.http简介

http是超文本传输协议的缩写(Hyper Text Transfer Protocol),是从万维网服务器传送到本地浏览器的传送协议

2.http的工作原理

HTTP的协议工作于客户端——服务端的框架上,即客户端向服务端发送请求,服务端接收请求后向客户端发送响应信息

3.http的特点

1.http是无连接的:无连接的含义是限制每次连接值处理一个请求,服务器处理完客户端的请求后,并受到客户的应道后即断开连接。

2.http是媒体独立的:这意味着只要客户端和服务端知道如何处理数据内容,任何类型的数据类型都可以通过http协议发送,客户端和服务端都知道使用合适的MIMR-type内容类型

3.http是无状态的:Http是无状态协议:指对事物处理没有记忆能力。

三、http协议的响应步骤

七步骤:
安卓网络请求1————Http协议

1.建立TPC连接

在HTTP工作开始之前, Web浏览器首先要通过网络与Web服务器建立连接, 该连接是通过TCP来完成的, 该协议与IP协议共同构建Internet, 即著名的TCP/IP协议族, 因此Internet又被称作是TCP/IP网络.

HTTP是比TCP更高层次的应用层协议,根据规则,有低层协议建立之后才能进行更高层协议的连接, 因此, 首先要建立TCP连接, 一般TCP连接的端口号是80.

tcp/ip 连接就是我们比较熟悉的三次握手

2、Web浏览器向Web服务器发送请求命令

一旦建立了TCP连接,Web浏览器就会向web服务器发送请求命令

3.Web浏览器发送请求头信息

浏览器发送其请求命令后,还要以头信息的形式向web服务器发送一些别的信息,这些信息用来描述浏览器自己,之后浏览器发送一空白行来通知服务器,表示它已经结束了该头信息的发送. 若是post请求, 还会在发送完请求头信息之后发送请求体.

4.Web服务器的应答

客户机向服务机发出请求后,服务器会向客户机会送应答
应答的第一部分是协议的版本号和应答状态码

5.Web服务器向浏览器发送应答头信息

正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档. 最后以一个空白行来表示头信息发送到此结束.

6.Web服务器向浏览器发送数据

Web服务器向浏览器发送头信息后, 它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据

7.Web服务器关闭TCP连接

一般情况下, 一旦Web服务器向浏览器发送了请求数据, 它就要关闭TCP连接. 如果浏览器或者服务器在其头信息加入了这行代码

Connection:keep-alive

TCP连接在发送后将仍然保持打开状态. 于是, 浏览器可以继续通过相同的连接发送请求. 保持连接节省了为每个请求建立新连接所需的时间, 还节约了网络带宽.。

四、http的消息结构

1.客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四部分。
示例:

GET/sample.jspHTTP/1.1   		//请求行
Accept:image/gif.image/jpeg,*/* 		//请求头部
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible'MEIS5.01;window NT5.0)
Accept-Encoding:gzip,deflate
											//空行
username=jingqiao&password=1234    //请求数据

请求的第一行是“方法URL议/版本”:GET/sample.jsp HTTP/1.1:

以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。
根据HTTP标准,HTTP请求可以使用多种请求方法。例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。
URL完整地指定了要访问的网络资源,通常只要给出相对于服务器的根目录的相对目录即可,因此总是以“/”开头,最后,协议版本声明了通信过程中使用HTTP的版本。

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所使用的语言,请求正文的长度

2.服务端响应消息

HTTP响应也由四个部分组成:状态行,消息报头,空行和响应正文。
示例:

HTTP/1.1 200 OK   		//
Server:Apache Tomcat/5.0.12			//
Date:Mon.60ct2003	 13:23:42   GMT
Content-Length:112
									//空行
<html>					//
<head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>									

状态行:他表示通信所用的协议是HTTP1.1服务器已经成功地处理了客户端发送的请求(200表示成功)

HTTP/1.1 200 OK

3.响应头信息

这一节介绍上面请求,响应的请求头中各参数的含义:
安卓网络请求1————Http协议

五、Http协议版本

Http到现在一共经历了3个版本的演化,,第一个HTTP协议诞生于1989年3月

1.Http 0.9

HTTP 0.9是第一个版本的HTTP协议,已过时。它的组成极其简单,只允许客户端发送GET这一种请求,且不支持请求头。由于没有协议头,造成了HTTP 0.9协议只支持一种内容,即纯文本。不过网页仍然支持用HTML语言格式化,同时无法插入图片。

HTTP 0.9具有典型的无状态性,每个事务独立进行处理,事务结束时就释放这个连接。由此可见,HTTP协议的无状态特点在其第一个版本0.9中已经成型。一次HTTP 0.9的传输首先要建立一个由客户端到Web服务器的TCP连接,由客户端发起一个请求,然后由Web服务器返回页面内容,然后连接会关闭。如果请求的页面不存在,也不会返回任何错误码。

2.Http 1.0

HTTP协议的第二个版本,第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用。相对于HTTP 0.9 增加了如下主要特性

请求和响应支持头域
响应对象以一共响应状态行开始
响应对象不止限于超文本
开始支持POST方法,支持GET,HEAD方法
支持长连接(但默认还是短连接),缓存机制,以及身份认证

3.Http 1.1

HTTP协议的第三个版本是HTTP 1.1,是目前使用最广泛的协议版本 。HTTP 1.1是目前主流的HTTP协议版本.

HTTP 1.1引入了许多的关键的性能优化:keepalive连接,chunked编码传输,字节范围请求,请求流水线等

a.keepalive连接
允许HTTP设备在事务处理结束之后将TCP连接保持在打开的状态,一遍未来的HTTP请求重用现在的连接,直到客户端或服务器端决定将其关闭为止。

在HTTP1.0中使用长连接需要添加请求头 Connection: Keep-Alive,而在HTTP 1.1 所有的连接默认都是长连接,除非特殊声明不支持( HTTP请求报文首部加上Connection: close )

b.chunked编码传输
该编码将实体分块传送并逐块标明长度,直到长度为0块表示传输结束, 这在实体长度未知时特别有用(比如由数据库动态产生的数据)

c.字节请求范围
HTTP1.1支持传送内容的一部分。比方说,当客户端已经有内容的一部分,为了节省带宽,可以只向服务器请求一部分。该功能通过在请求消息中引入了range头域来实现,它允许只请求资源的某个部分。在响应消息中Content-Range头域声明了返回的这部分对象的偏移值和长度。如果服务器相应地返回了对象所请求范围的内容,则响应码206(Partial Content)

d.其他功能

请求头和响应消息都支持Host头域
新增了一些方法
缓存处理,在1.0的基础上增加了新特性,引入了实体标签。

4.Http 2.0

HTTP 2.0是下一代HTTP协议,目前应用还非常少。主要特点有:

a.多路复用(二进制分帧)
HTTP 2.0最大的特点: 不会改动HTTP 的语义,HTTP 方法、状态码、URI 及首部字段,等等这些核心概念上一如往常,却能致力于突破上一代标准的性能限制,改进传输性能,实现低延迟和高吞吐量。而之所以叫2.0,是在于新增的二进制分帧层。在二进制分帧层上, HTTP 2.0 会将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码 ,其中HTTP1.x的首部信息会被封装到Headers帧,而我们的request body则封装到Data帧里面。

b.头部压缩
当一个客户端向相同服务器请求许多资源时,像来自同一个网页的图像,将会有大量的请求看上去几乎同样的,这就需要压缩技术对付这种几乎相同的信息。

c.随时复位
Http1.1一个缺点就是当Http信息由一定长度大小数据传输时,你不能方便地随时停止它,中断TCP连接的代价是昂贵的。使用HTTP2的RST_STREAM将能方便停止一个信息传输,启动新的信息,在不中断连接的情况下提高带宽利用效率。

d.服务器端推流: Server Push
客户端请求一个资源X,服务器端判断也许客户端还需要资源Z,在无需事先询问客户端情况下将资源Z推送到客户端,客户端接受到后,可以缓存起来以备后用。

e.优先权和依赖
每个流都有自己的优先级别,会表明哪个流是最重要的,客户端会指定哪个流是最重要的,有一些依赖参数,这样一个流可以依赖另外一个流。优先级别可以在运行时动态改变,当用户滚动页面时,可以告诉浏览器哪个图像是最重要的,你也可以在一组流中进行优先筛选,能够突然抓住重点流。

六、http协议的请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
安卓网络请求1————Http协议

七、http协议的状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页的服务器发送请求。当浏览器就收并显示网页前,此网页的服务器会返回一个包含HTTP状态码的信息头(server header)用于响应浏览器的请求

1.http状态码分类

http状态码由三个十进制数组组成,第一个十进制数组定义了状态码的类型,后两个数字没有分类的作用,http状态码分为5种状态
安卓网络请求1————Http协议

2.http状态码列表

安卓网络请求1————Http协议
安卓网络请求1————Http协议
安卓网络请求1————Http协议文章来源地址https://www.toymoban.com/news/detail-458028.html

到了这里,关于安卓网络请求1————Http协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【HTTP 协议2】如何构造 HTTP 请求

    各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表, 链表, 堆, 二叉树, 二叉搜索树, 哈希表等 📘 JavaEE初阶: 多线程, 网络编程, TCP/IP协议, HTTP协议

    2024年02月12日
    浏览(37)
  • 【HTTP 协议1】图文详解 HTTP 请求和应答报文

    各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表, 链表, 堆, 二叉树, 二叉搜索树, 哈希表等 📘 JavaEE初阶: 多线程, 网络编程, TCP/IP协议, HTTP协议

    2024年02月12日
    浏览(45)
  • HTTP协议请求详解

    ✏️✏️✏️今天给大家分享的是 HTTP 请求部分的基础知识。 清风的CSDN博客 🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流! ✈️✈️✈️动动你们发财的小手,点点关注点点赞!在此谢过啦!哈哈哈!😛😛😛 目

    2024年01月17日
    浏览(29)
  • HTTP协议,请求响应

    2024年02月07日
    浏览(30)
  • HTTP协议的请求方式有哪些?

    HTTP协议的请求方式共有9种,分别为: 1. GET请求:用于请求获取Request-URI所标识的资源。 2. POST请求:在Request-URI所标识的资源后增加新的数据。 3. HEAD请求:请求获取由Request-URI所标识的资源的响应消息报头。 4. PUT请求:请求服务器存储或修改一个资源,并用Request-URI作为其

    2024年02月15日
    浏览(31)
  • Nginx接收Http协议请求转发使用Https协议

    公司使用阿里的apigateway,规定不太友好,同是SIT环境,A系统的SIT1环境居然不能调用B系统的SIT2环境的接口。因为各个系统之间部署的SIT环境数量不同A系统可能只有1套,B系统可能有8套,这样的话,可能会随时切换调用B系统的环境,管理员不允许,于是想着用Nginx做下转发。

    2024年02月08日
    浏览(51)
  • HTTP 协议中的请求头参数

    本文对http头部字段:Connection、Content-Length、Transfer-Encoding 、Content-Encoding、Content-Type 等进行介绍。 POST https://1.26.1.10:22/reportquery/v1/cc HTTP/1.1 Accept: / User-Agent: abcd Host: 1.26.1.10:22 Connection: Keep-Alive Content-Type: application/json;charset=UTF-8 Content-Length: 170 SequenceId: 6 ProvinceId: 32 X-TerminalNo:

    2023年04月09日
    浏览(26)
  • HTTP基础:学习HTTP协议的基本知识,了解请求和响应的过程

    HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议,它是Web中最基本的协议。 HTTP请求和响应都是由客户端和服务器之间进行的。 一个完整的HTTP请求由以下几个部分组成: 请求行:包括请求方法(GET、POST等)、请求的URI和HTTP协

    2024年02月12日
    浏览(33)
  • HTTP/1.1协议中的请求报文

    2023年8月30日,周三上午 目录 概述 请求报文示例 详述 HTTP/1.1协议的请求报文由以下几个部分组成: 请求行(Request Line) 请求头部(Request Headers) 空行(Blank Line) 请求体(Request Body) 需要注意的是,请求头部是可选的,而请求行和空行是必需的。 在这个示例中, 请求行指

    2024年02月10日
    浏览(28)
  • Java课题笔记~ HTTP协议(请求和响应)

    Servlet最主要的作用就是处理客户端请求,并向客户端做出响应。为此,针对Servlet的每次请求,Web服务器在调用service()方法之前,都会创建两个对象 分别是HttpServletRequest和HttpServletResponse。 其中HttpServletRequest用于封装HTTP请求消息,简称request对象; HttpServletResponse用于封装HTT

    2024年02月13日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包