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

目录

[一、postman 的下载安装以及简单介绍](#一、postman 的下载安装以及简单介绍)

1、下载安装

2、postman的介绍

[二、通过 Java socket 构造 HTTP 请求](#二、通过 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 请求,代码如下:

java 复制代码
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");
        // 构造 header
        request.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");
        // 构造 header
        request.append("Host: " + ip + ":" + port + "\n");
        request.append("Content-Length: " + body.getBytes().length + "\n");
        request.append("Content-Type: text/plain\n");
        // 构造 空⾏
        request.append("\n");
        // 构造 body
        request.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);
    }
}

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

相关推荐
梦帮科技13 小时前
量子张量网络破局大模型:从矩阵乘积态 (MPS) 到张量列 (TT-SVD) 低秩收缩全推导
网络·数据结构·数据库·线性代数·矩阵·架构·模拟退火算法
潜创微科技14 小时前
一颗为网络摄像头而生的高度集成 SoC:SSC335DE 技术解析与选型参考
网络·以太网·评估板·参考设计
星恒讯工业路由器15 小时前
车载以太网中的TCP与UDP:诊断、服务通信与网络管理怎么选
网络·tcp/ip·udp
Zhou14113615 小时前
Docker_02_Dockerfile与存储网络
网络·docker·容器
ESDWAN15 小时前
外贸企业网络专线选型与落地实战指南
网络·架构
重生之我是小技16 小时前
独享代理IP与共享代理IP的核心区别
网络
涉密IT资质笔记17 小时前
涉密人员脱密期管理规范:期限分级模型、就业限制边界与违规认定标准
java·服务器·前端·网络·数据库
honsor17 小时前
PoE温湿度传感器:一根网线供电+通信,即插即用,机房/配电室/仓库温湿度监测首选
运维·服务器·网络·数据库·人工智能·安全
Ivanqhz17 小时前
干涉图着色
java·服务器·网络·数据库·人工智能·深度学习
xiaoye-duck18 小时前
《Linux 网络编程》深入理解 IO 多路复用:select服务器完善、poll 接口详解与服务端改造实战
linux·网络