网络原理 - HTTP / HTTPS(4)——构造http请求

目录

一、postman 的下载安装以及简单介绍

1、下载安装

2、postman的介绍

二、通过 Java socket 构造 HTTP 请求


        构造http请求的方式有两种:(1)通过代码构造(有一点难度)       (2)通过第三方工具构造(非常容易)。

        下面介绍第三方工具构造http请求,这个工具就是:postman。下面介绍postman的下载安装以及简单介绍

一、postman 的下载安装以及简单介绍

1、下载安装

        因为我没有挂梯子,官网加载不出来(官网地址:Postman API Platform),大家就自行在网上找资源吧,下载完后,我们按照指引,往下next。具体安装细节,可以参考这位大佬文章:postman官网下载安装登录测试详细教程-CSDN博客

        第一次安装,需要进行登录,我们注册一个账户。如图:

        登录完成后的界面,如图:

2、postman的介绍

        点击Workspaces,这里指的是工作空间,我们点击创建新的工作空间,如图:

        选择一些选项,如图:

        创建完后,点击这里的+号,如图:

        就可以构造http请求了,如图:

        这里每个标签页,都是一个构造http请求的配置页面,上面的send按钮,是发送请求到目标服务器的按钮。

构造请求的一些功能选项

        url,可以在这里写入,如图:

        query string可以在这里添加,如图:

        添加 a = 11,b = 22,如图:

        报头(header),如图:

        正文(body),如图:

        然后我们点击send(发送HTTP请求)试试,下面这里会得到一个响应的结果,如图:

        对了,postman还可以生成对应语言的代码,如图,点击这个选项:

        随便选择一个,如图:

        这就是对应语言,使用代码构造的HTTP请求。

        okHttpClient是一个比较知名的 Java 的客户端的 HTTP 客户端库,后续如果要用到它,但不知道代码咋写,就可以在这里生成代码

        除此之外,postman还是一个有对象的软件,它的对象是postwoman。


        构造http请求还能使用 form表单 和 ajax,这里就不做讨论了

二、通过 Java socket 构造 HTTP 请求

        所谓的 HTTP 请求,本质就是按照HTTP的格式,往TCP Socket 里写入一个字符串所谓的 HTTP 响应,本质就是按照TCP Socket 中读取一个字符串,按照 HTTP 协议的格式来解析

        基于 Socket 的知识,完全可以构造出一个简单的 HTTP 客户端程序,用来发送 HTTP 请求,代码如下:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;public class HttpClient {private Socket socket;private String ip;private int port;public HttpClient(String ip, int port) throws IOException {this.ip = ip;this.port = port;socket = new Socket(ip, port);}public String get(String url) throws IOException {StringBuilder request = new StringBuilder();// 构造⾸⾏request.append("GET " + url + " HTTP/1.1\n");// 构造 headerrequest.append("Host: " + ip + ":" + port + "\n");// 构造 空⾏request.append("\n");// 发送数据OutputStream outputStream = socket.getOutputStream();outputStream.write(request.toString().getBytes());// 读取响应数据InputStream inputStream = socket.getInputStream();byte[] buffer = new byte[1024 * 1024];int n = inputStream.read(buffer);return new String(buffer, 0, n, "utf-8");}public String post(String url, String body) throws IOException {StringBuilder request = new StringBuilder();// 构造⾸⾏request.append("POST " + url + " HTTP/1.1\n");// 构造 headerrequest.append("Host: " + ip + ":" + port + "\n");request.append("Content-Length: " + body.getBytes().length + "\n");request.append("Content-Type: text/plain\n");// 构造 空⾏request.append("\n");// 构造 bodyrequest.append(body);// 发送数据OutputStream outputStream = socket.getOutputStream();outputStream.write(request.toString().getBytes());// 读取响应数据InputStream inputStream = socket.getInputStream();byte[] buffer = new byte[1024 * 1024];int n = inputStream.read(buffer);return new String(buffer, 0, n, "utf-8");}public static void main(String[] args) throws IOException {HttpClient httpClient = new HttpClient("42.192.83.143", 8080);String getResp = httpClient.get("/AjaxMockServer/info");System.out.println(getResp);String postResp = httpClient.post("/AjaxMockServer/info", "this is body");System.out.println(postResp);}
}

都看到这了,点个赞再走吧,谢谢谢谢谢

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

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

相关文章

Anaconda/Python快速安装jieba 【win/mac】

一、直接上命令 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba 我是在PyCharm里面的终端输进去。 之后就很快速的看到成功的下图。 二、官网 官网下载的速度太慢了——这是官网地址https://pypi.org/project/jieba/#files 点进去之后点击下载&#xff0c…

【卷积神经网络进展】

打基础日常记录 CNN基础知识1. 感知机2. DNN 深度神经网络(全连接神经网络)DNN 与感知机的区别DNN特点,全连接神经网络DNN前向传播和反向传播 3. CNN结构【提取特征分类】4. CNN应用于文本 CNN基础知识 1. 感知机 单层感知机就是一个二分类…

Mysql不同条件设置相同的值(使用子查询)

WHEN type1 THEN payable_price WHEN type2 THEN payable_price ELSE MAX(payable_price) type1 表示订单维度,type2表示商品维度,需要无论type值为多少都取type1时的payable_price值 解决方案: 使用SQL子查询; SELECT CASE WHEN type …

利用AI结合无极低码(免费版)快速实现接口开发教程,会sql即可,不需要编写编译代码

无极低码无代码写服务+AI实践 本次演示最简单的单表无代码增删改查发布服务功能,更复杂的多表操作,安全验证,多接口调用,自自动生成接口服务,生成二开代码,生成调用接口测试,一键生成管理界面多条件检索、修改、删除、查看、通用公共接口调用、通用无限级字典调用等后续…

Java的Cookie和Session配合解决会话管理问题

目录 会话管理概述 为什么需要会话管理 会话管理实现的手段 Cookie Cookie概述 Cookie的使用 Cookie的时效性 Cookie的提交路径 Session HttpSession概述 HttpSession的使用 HttpSession时效性 cookie和session结合使用 会话管理概述 为什么需要会话管理 在Java…

【Java入门教程】第二十讲:集合和常见操作

集合框架(Collection)是 Java 编程语言中一个非常重要的组成部分,它为存储和操作数据提供了一套灵活而强大的API。 本文将详细介绍Java集合框架的基本概念、常用接口和实现类,并通过代码示例来加深理解,帮助大家更好地…

Vue中生成二维码,使用现有的二维码库qrcode

要在Vue中生成二维码,你可以使用现有的二维码库,如qrcode。首先,你需要安装这个库。在你的项目目录下,运行以下命令: bash 复制 npm install qrcode --save 然后,在你的Vue组件中,你可以这样使…

ssm基于jsp的学生作业管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本学生作业管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

C#(C Sharp)学习笔记_Enum枚举类型【十三】

什么是枚举类型 枚举类型(Enum) 是由基础整型数值类型的一组命名常量定义的值类型。枚举包含自己的值,但不能继承或传递继承。 语法 // enum enum_name // enum_name variable enum_name.enum_value// 定义一个枚举类型——例如: enum enum_name {va…

【MATLAB源码-第30期】基于matlab的内边界边缘检测算法。

操作环境: MATLAB 2022a 1、算法描述 在计算机视觉领域,图像分割(segmentation)指的是将数字图像细分为多个图像子区域(像素的集合)(也被称作超像素)的过程。图像分割的目的是简化…

查找算法第1篇

查找,又称搜索,检索。 查找运算的主要操作是关键字的比较, 通常把查找过程中的平均比较次数(也称为平均查找长度) 作为衡量一个查找算法效率优劣的标准。 平均查找长度(Average Search. Length ASL) 的计算公式为 A S L ∑ i 1 n P n C i…

mysql常见故障

目录 1. 连接问题 2. 数据库无法启动 3. 数据库崩溃 4. 慢查询 5. 主从同步问题 6. 硬件故障 7. 日志问题 8. 其他常见问题 注意事项 1. ERROR 1045 (28000): Access denied for user userhost (using password: YES) 2. ERROR 2002 (HY000): Cant connect to local…

【DevOps】使用Filebeat收集华为云cce containerd日志

目录 1、背景2、containerd日志路径3、收集日志1、背景 将 Docker 换成 containerd 作为 Kubernetes (K8s) 集群中的容器运行时有以下几个好处: 性能提升: containerd 相较于 Docker,其设计更为精简,专注于容器的生命周期管理,没有Docker包含的其他额外服务如API服务器…

突破编程_C++_网络编程(TCPIP 四层模型(概述))

1 TCP/IP概述 1.1 TCP/IP的定义与起源 TCP/IP 协议,全称为 Transmission Control Protocol/Internet Protocol,中文名为传输控制协议/因特网互联协议,又名网络通讯协议。这是 Internet 最基本的协议,也是 Internet 国际互联网络…

【云原生篇】K8S之DaemonSet 详解

Kubernetes 的 DaemonSet 是一种特殊的工作负载控制器,它确保所有(或某些特定的)节点上都运行一个 Pod 的副本。当有新节点加入集群时,DaemonSet 会自动在新节点上添加相应的 Pod,当节点从集群中移除时,这些…

PWM模块的中断

在PWM模块中使用中断的主要目的是为了实现定时中断功能。PWM(脉宽调制)是一种通过调节信号的脉冲宽度来控制输出电压或电流的技术,在嵌入式系统中广泛应用于控制电机、LED亮度调节等领域。而在某些应用场景下,需要在PWM周期内定时…

sentinel与nacos集成

前言 sentinel的规则可以通过编码方式定义,也可以通过配置方式定义。sentinel-dashboard提供了界面维护功能,但是配置是存储在内存中的。因此需要进行持久化。 Sentinel自身就支持了多种不同的数据源来持久化规则配置,目前包括以下几种方式…

Swing中的FlowLayout/WrapLayout在打横排列时候如何做到置顶对齐

前言 最近在开发swing客户端时候碰到一个棘手的问题: Swing中的FlowLayout/WrapLayout在打横排列时候如何做到置顶对齐如果是vue或者react,一搜百度什么都出来了,swing的话,嗯。。。资料有点少而且大部分是stack overflow上面的…

Docker环境安装Postgresql数据库Posrgresql 15.6

宿主机是ubuntu 22.04版本 ubuntu宿主机上安装docker,参见官方文档https://docs.docker.com/engine/install/ubuntu/, docker-ce是社区版 docker-ee是企业版 1、检查Docker是否安装 rootODS1SPGOFSDEV:~# docker Command docker not found, but can be installed …

51单片机学习笔记12 SPI接口 使用1302时钟

51单片机学习笔记12 SPI接口 使用1302时钟 一、DS1302简介1. 功能特性2. 涓流充电3. 接口介绍时钟数据和控制线:电源线:备用电池连接: 二、寄存器介绍1. 控制寄存器2. 时间寄存器3. 日历/时钟寄存器 三、BCD码介绍四、DS1302时序1. 读时序2. …