当前位置: 首页 > news >正文

HarmonyOS-ArkUI Web控件基础铺垫1-HTTP协议-数据包内容

ArkUI的Web组件,其API体系非常壮大,Web组件API涉及100+, WebviewController接口涉及100+。 其中有大量接口涉及到Http协议的各项环节把控。可以说,如果不了解Http协议,您大概率学不动这个控件。尽管可以实现简单的需求, 但是想要往性能上拔高就比较困难。所以我打算讲这个控件前,先进行基础铺垫。先讲HTTP协议。

Web组件,即:一个客户端的浏览器。而且其最广泛的用途正式展示一个网站,一个网页。一个网页实质上是用一个HTML文档和一系列代码描述的。 浏览器拿到这些文件可以解析。 浏览器传输这些文件,使用的正是HTTP协议。

本文重点是用图来表示HTTP协议中的内容都有什么。

什么是HTTP协议

http(HyperText Transfer Protocol)汉语译为超文本传输协议。是互联网应用最广泛的一种网络协议。所有的www文件都必须遵守这个标砖。设计http最初的目的就是为了提供一种发布和接受html页面的方法。后来就用于各种客户端数据请求中了。这个协议非常常用。我们本文学习的是:

  • http数据包的内容组成部分。
  • http每个内容组成部分的构建规则。
  • http每个组成部分最常用的一些值,或者方法,各代表什么意思。

HTTP数据包里都有什么

HTTP的报文分为两类

  • 请求报文: 由请求行+请求头+空行+请求体 四部分组成。
  • 响应报文: 由状态行 + 响应头 + 空行 + 响应体 四部分组成。

这两类的报文组成部分有部分是相同的有部分是不同的,如图所示。

通过上图可以知道, 我们抽丝剥茧,学习各部分构建的规则,以及各个具体值代表什么意思,基本就掌握这个协议了。

请求报文

如下图,请求报文是由四个部分组成的,为

请求行

请求头

空行

请求体

Http最简单的请求报文,和四大部分的分布。如下图所示:

http请求与TCP协议表现不一样的点,在于它的每一项的内容长度并不固定, 所以我们只能按照一段

请求行

请求行是报文的第一行内容,用于定义请求的基本意图以及资源目标。包含三部分

  • 请求方法, 表明意图。
  • URI: 表示请求的资源是什么。URI作为统一资源标识符,可以指定资源目标的路径,可以包含查询的参数,如 /search?q=hello
  • 协议版本号: 声明使用http版本,用来决定协议的特性。

请求行是整个http请求报文的起始点,以CRLF(\r\n)为结束。其结构划分为:

方法

我们重点讲讲请求行里面的方法。它是HTTP请求包的第一个组成部分,也是请求行的第一个部分,用来表明请求资源的意图。其中方法可以为以下的几种:

方法

说明

对应的报文规则

GET

获取资源

链接要求: GET方法的请求参数必须包含在URL中, 文章最开始就是一个GET请求的内容

请求头要求:可包含Accept, If-Modifiedl-Since等缓存控制字段

请求体要求:不可以有!

POST

传输实体主体,提交数据

链接要求:可以加参数也可以不加,不加参数可以写在请求体中。

请求头要求:

  • 必须带Content-Type字段以方便服务端解析请求体
  • 必须带Content-Length 或者分块传输 Transfer-Encoding:chunked 以去确定请求体的长度,或者分块,总之一定要知道这个请求体应该怎么解析。

请求体要求:必须包含请求体

PUT

  • 全量更新
  • 替换或者创建目标资源。
  • 传输文件,一般用于上传

http://www.lryc.cn/news/586766.html

相关文章:

  • EPLAN多项目并行,电气设计许可如何不浪费?
  • (S4)Efficiently Modeling Long Sequences with Structured State Spaces论文精读(逐段解析)
  • ReAct论文解读(1)—什么是ReAct?
  • 基于YOLOv11的无人机目标检测实战(Windows环境)
  • Spring Cloud Gateway 实战指南
  • 力扣经典算法篇-21- 两数之和 II - 输入有序数组(固定一端 + 二分查找法,双指针法)
  • MongoDB性能优化实战指南:原理、实践与案例
  • git实际工作流程
  • 【零基础入门unity游戏开发——unity3D篇】3D光源之——unity反射和反射探针技术
  • SPSSPRO:数据分析市场SaaS挑战者的战略分析
  • 深入解析Hadoop架构设计:原理、组件与应用
  • (2)从零开发 Chrome 插件:实现 API 登录与本地存储功能
  • 代码随想录|图论|14有向图的完全可达性
  • 基于Prompt结构的语校解析:3H日本语学校信息建模实录(4/500)
  • Java求职面试:从Spring到微服务的全面挑战
  • AI进化论12:大语言模型的爆发——GPT系列“出圈”,AI飞入寻常百姓家
  • 碳水循环(增肌、减脂)
  • VISUALBERT:一个简单且高效的视觉与语言基线模型
  • 【读书笔记】《Effective Modern C++》第3章 Moving to Modern C++
  • 14.ResourceMangaer启动解析
  • .NET + WPF框架开发聊天、网盘、信息发布、视频播放功能
  • 股指期货的三种风险类型是什么?
  • 15.手动实现BatchNorm(BN)
  • Linux中的数据库操作基础
  • pycharm+SSH 深度学习项目 远程后台运行命令
  • python爬取新浪财经网站上行业板块股票信息的代码
  • 【读书笔记】《C++ Software Design》第七章:Bridge、Prototype 与 External Polymorphism
  • cuda编程笔记(7)--多GPU上的CUDA
  • UniHttp生命周期钩子与公共参数实战:打造智能天气接口客户端
  • jenkins部署前端vue项目使用Docker+Jenkinsfile方式