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

简介: 网络原理 - HTTP / HTTPS(4)——构造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");
        // 构造 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);
    }
}


相关文章
|
11天前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
11天前
【网路原理】——HTTP状态码和Postman使用
状态码(200,404,403,405,500,504,302),Postman下载和使用构造请求
|
11天前
|
存储 JSON 缓存
【网络原理】——HTTP请求头中的属性
HTTP请求头,HOST、Content-Agent、Content-Type、User-Agent、Referer、Cookie。
|
11天前
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
12天前
|
数据采集 安全 搜索推荐
HTTP代理IP纯净度 提升用户网络体验的核心竞争力
随着互联网发展,使用HTTP动态代理IP的需求日益增加。高纯净度的代理IP在隐私与安全、网络体验和业务运营方面至关重要。它能保护用户信息、提高数据安全性、确保访问速度和连接稳定,并提升业务效率与信誉度。
38 2
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
本文总结了java中byte转换int时总是与0xff进行与运算的原因。在剖析该问题前请看如下代码: public static String bytes2HexString(byte[] b) { String ret = ""; for (int i = 0; i < b.
951 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
1.使用lsmod查看ipv6的模块是否被加载。 lsmod | grep ipv6 [root@dmhadoop011 ~]# lsmod | grep ipv6 ipv6                  317340  127 bonding 如果加载了,则进行如下操作: 2.
799 0
|
新零售 监控
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
千万级规模高性能、高并发的网络架构经验分享 主 题 :INTO100沙龙时间 :2015年11月21日下午地点 :梦想加联合办公空间分享人:卫向军(毕业于北京邮电大学,现任微博平台架构师,先后在微软、金山云、新浪微博从事技术研发工作,专注于系统架构设计、音视频通讯系统、分布式文件系统和数据挖掘等领域。
1297 0
|
Web App开发 前端开发 数据库
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
在分布式高并发的情况下,分布式主键生成策略可参考mongodb的objectid实现。ObjectId是一种轻量的,不同的机器不同的进程都能用全局唯一的同种方法生成它,而不是采用传统的自增的主键策略,因为在多台服务器上同步自动增加主键既费力又费时。
765 0
|
Web App开发 前端开发 大数据
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
提  纲     1、移动DSP与传统营销有什么不同?     2、为什么移动DSP是大势所趋?     3、哪些因素决定移动DSP的精准与否?     4、如何辨别移动DSP的真伪优劣?     ...
965 0