【JavaEE】_HTTP请求与响应

目录

1. HTTP协议

1.1 HTTP简介

1.2 Fiddler

2. HTTP请求

2.1 首行

2.2 请求头(header)

2.3 空行

2.4 正文(body)

3. HTTP响应

3.1 首行

3.2 响应头(header)

3.3 空行

3.4 正文(body)


1. HTTP协议

1.1 HTTP简介

1. HTTP协议即“超文本传输协议”,即不止可以传输文本,还可以传输图片、音频、视频等二进制数据,是一个应用层协议

2. HTTP已经更新到HTTP/3.0,但目前大规模使用的版本是HTTP/1.1;

3. 最常见的使用HTTP协议的场景有:

(1)网站网页与后台服务器的交互

(2)手机APP与后台服务器的交互

4. 应用层协议需要基于传输层协议向上层提供服务,HTTP是基于TCP协议实现的

5. HTTP协议是一种“一问一答”结构模型的协议。

6. HTTP报文与之前的TCP/UDP报文不同,HTTP的报文分为请求和响应两种格式

:1. 常见的协议结构模型有:

(1)一问一答:访问网站

(2)多问一答:上传文件

(3)一问多答:下载文件

(4)多问多答:串流,远程桌面

1.2 Fiddler

Fiddler是当今广泛使用的HTTP抓包工具,具体下载以及简单使用见下文,此处不再赘述:

【JavaEE】_Fiddler抓包HTTP请求与响应-CSDN博客

2. HTTP请求

2.1 首行

HTTP请求的第一行有三个部分信息,分别使用空格进行分隔:

1. GET:HTTP请求的“方法”(method),表示请求的目的;

2. URL:即唯一资源定位符,用于描述一个资源在网络上的位置:

3. 版本号:HTTP/1.1目前是最主流的HTTP版本;

2.2 请求头(header)

1. 请求头是键值对结构的数据,每个键值对独占一行,格式为: 键: 值;

2. 此处的键与值都是标准规定的,后续详细介绍;

2.3 空行

空行用于作为请求头的结束标记

2.4 正文(body)

有些HTTP请求有正文部分,有些HTTP请求没有正文部分;

3. HTTP响应

3.1 首行

HTTP响应首行有三个部分:

1. 版本号:HTTP/1.1

2. 状态码(200):描述了请求的结果;

3. 状态码描述(OK):进一步描述状态码的含义:

3.2 响应头(header)

同HTTP请求一样:

1. 请求头是键值对结构的数据,每个键值对独占一行,格式为: 键: 值;

2. 键与值内容由标准规定;

3.3 空行

空行是响应头的结束标志;

3.4 正文(body)

正文内容可能比较长,并且可能是多种样式,如HTML,CSS,JS,JSON,XML,图片、字体、视频、音频等等,可能会进行压缩;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/682438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

13.let、const、var的区别

(1)块级作用域: 块作用域由 { }包括,let和const具有块级作用域,var不存在块级作用域。块级作用域解决了ES5中的两个问题: 内层变量可能覆盖外层变量用来计数的循环变量泄露为全局变量 (2&…

51单片机编程基础(C语言):LED点阵屏

点阵屏介绍 类似于数码管,要用到肉眼视觉效应。扫描,才能把每一个LED都能选中,从而显示我们想要的图形,否则, 只能一次点亮一个LED, LED使用 51单片机点阵屏电路图: 实际连接顺序如下图&#…

Java中的乐观锁和悲观锁

使用场景及用法 悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,…

爱快使用VPN

文章目录 一、VPN服务器1. 各种VPN比较2. PPTP服务端配置3. 创建登录账号4. 创建端口映射5. 设置动态域名 二、Windows客户端1. 连接配置2. 不能连接 Internet 配置 一、VPN服务器 1. 各种VPN比较 PPTPIPSECOpenVPN简介微软推出的VPN协议,占用资源少更高级的VPN协…

php基础学习之分支结构和循环结构(不细讲,来对比一下和两大常用高级编程语言(C++/Java)的细微区别以便记忆)

分支结构 常见分支结构 编程语言常见分支结构有: if语句if-else语句if-elseif-else语句switch语句 其中,除了if-elseif-else语句外,另外3中分支语句在php中和C/Java是一模一样的! 而if-elseif-else的唯一不同点就在,【…

Linux查看日志的几种方法总结

摘要 Linux系统中查看日志的命令确实多种多样,每个命令都有其特定的用途和优势。常用的命令有:tail、cat、tac、head、echo,grep、less、awk、sed。 下面我会详细解释这些命令在查看日志时的用法和特点: tail命令: ta…

机器学习:ROC曲线笔记

ROC曲线(Receiver Operating Characteristic Curve)是一种用于评估二分类模型性能的图形化工具,主要用于展示在不同阈值(Threshold)下模型的真阳性率(True Positive Rate,TPR)和假阳…

比亚迪面试

HashMap的底层结构 HashMap 在 Java 中是基于散列算法实现的,其底层主要由数组和链表(Java 8 后加入了红黑树)构成。当一个元素被加入到 HashMap 中时,会使用散列函数计算出该元素的存储索引,然后将元素存储到对应索引…

elasticSearch使用场景深入详解

Elasticsearch 是一个基于 Lucene 的搜索引擎,它提供了一个分布式、支持多租户的全文搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。Elasticsearch 是 Elastic Stack 的核心,Elastic Stack 包括 Kibana、Beats 和 Logstash 等组件&#xf…

寒假作业:2024/2/14

作业1&#xff1a;编程实现二维数组的杨辉三角 代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> int main(int argc, const char *argv[]) {int n;printf("please enter n:");scanf("%d",&n);int a…

Windows 安装Redis教程

在Windows系统上安装Redis相对简单&#xff0c;主要步骤包括下载、解压、配置和启动Redis服务。以下是一个详细的安装教程&#xff1a; 1. 下载Redis 访问Redis官方网站下载页面&#xff1a;https://redis.io/download选择适用于Windows的安装包&#xff0c;通常有两个版本&a…

蓝桥杯---奇怪的数列

题目描述 从X星截获一份电码&#xff0c;是一些数字&#xff0c;如下&#xff1a; 13 1113 3113 132113 1113122113 .... YY博士经彻夜研究&#xff0c;发现了规律&#xff1a; 第一行的数字随便是什么&#xff0c;以后每一行都是对上一行“读出来” 比如第2行&#xff0c;是对…

springboot开启mybatis二级缓存

我的项目版本号如下&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.8</version><relativePath/> <!-- lookup parent from reposito…

Redis核心技术与实战【学习笔记】 - 31.番外篇:Redis客户端如何与服务器端交换命令和数据

简述 Redis 使用 RESP 协议&#xff08;Redis Serialzation Protocol&#xff09;协议定义了客户端和服务器端交互的命令、数据的编码格式。在 Redis 2.0 版本中&#xff0c;RESP 协议正式称为客户端和服务器端的标准通信协议。从 Redis 2.0 到 Redis 5.0 &#xff0c;RESP 协…

leetcode:55.跳跃游戏

1.解题思路&#xff1a;贪心算法看最大覆盖范围 2.模拟过程&#xff1a; 1.若数组长度等于1&#xff0c;直接返回True 2.循环遍历覆盖范围&#xff0c;选取最大的覆盖范围&#xff1b;若覆盖范围覆盖到了最后一个元素&#xff0c;直接返回true. 3.代码&#xff1a;(贪心无套…

Python struct.pack/struct.unpack 和 encoding/decoding的区别

一直觉得这两对函数有种微妙的对应&#xff0c;两者都涉及到数据的转换&#xff0c;struct.pack/struct.unpack 在二进制数据和 Python 对象之间进行转换&#xff0c;而 encoding/decoding 在文本数据和字节流之间进行转换 下面理一理它们的区别&#xff1a; 目的和用途&#…

ros自定义msg记录

文章目录 自定义msg1. 定义msg文件2. 修改 package.xml3. 修改 CMakeLists.txt4. message_publisher.py5. message_subscriber.py6. 运行 catkin build 测试 自定义msg ros 版本&#xff1a;kinetic 自定义test包的文件结构如下 |-- test | |-- CMakeLists.txt | |-- msg…

spring注解驱动系列--组件注入

一、spring组件注入的几种方式 1、Bean[导入的第三方包里面的组件] 2、包扫描组件标注注解&#xff08;ComponentScans/ComponentScan Controller/Service/Repository/Component&#xff09; 3、Import[快速给容器中导入一个组件] 4、使用Spring提供的 FactoryBean&#xff08…

Hive3.1.2——企业级调优

前言 本篇文章主要整理hive-3.1.2版本的企业调优经验&#xff0c;有误请指出~ 一、性能评估和优化 1.1 Explain查询计划 使用explain命令可以分析查询计划&#xff0c;查看计划中的资源消耗情况&#xff0c;定位潜在的性能问题&#xff0c;并进行相应的优化。 explain执行计划…

收藏:关于块存储,文件存储和对象存储

在B站上看到”【IT老齐465】“这个系列相当不错&#xff0c;每次的视频15分钟左右&#xff0c;出了400多个了&#xff0c;今天偶然看到&#xff0c;地址是&#xff1a;【IT老齐465】块存储、文件存储、对象存储的关系与区别_哔哩哔哩_bilibili 精彩摘录如下&#xff1a;