本文将重点介绍如何构造 HTTP 请求和构造 HTTP 请求的几种方法。方法一通过 form 表单构造 HTTP 请求纯 HTML 文案方法二通过 ajax 构造 HTTP 请求通过 javascript 构造 HTTP 请求方法三通过 Java socket 构造 HTTP请求以上三种方法在后续学习中会介绍这里先暂且不谈我们专注于下面两种方法方法四使用 Java 标准库的方案Java标准库提供了一种方案让我们可以直接访问 HTTP 服务器或者 HTTPS 的服务器我们直接编写代码构造 HTTP 请求1先创建一个 HttpClient 对象创建对象的时侯需要导入 Java标准库记得认准库名同样的类名的库有很多我们可以直接 通过new出这个对象只不过我们发现new完后变成了一种类似于匿名内部类重写我们需要去重写很多方法比较麻烦这个标准库中的类给我们提供了工厂方法我们可以直接使用这个工厂方法相较于直接new会简单许多2创建一个请求对象我们上述创建的是一个客户端对象我们还需要再创建一个请求对象我们后续需要通过这个客户端把我们的请求对象发送出去这里的 newBuilder 方法可以让我们用链式调用的方式构造出我们的请求提问什么是链式调用我们先创造一个对象然后在借助这个对象不断的调用它的方法这个写法说来话长它源于C#C# 是一种很像 Java 的一种语言但它又有自己的创新这个就是其中的一个链式调用可以根据我们自己的需求去调用它的方法调用后返回一个相同的对象我们就可以继续调用这个方法出现的背景或者说存在的价值本质上是 Java/C# 没有 “ 关键字参数 ” 这样的语法 “ 关键字参数 ” 的语法 Python 就有它在调用方法中可以指定实参和形参的名字不要求顺序匹配func(x 10,y 20)我们可以通过这个链式调用添加请求中的各种参数但是最后需要以 .build() 结尾3发送请求构造完请求后我们就需要通过 send 发送请求这里的send提供了两个版本分别是同步发送和异步发送问题什么是同步发送和异步发送注意这里的同步并不是我们之前学加锁的 synchronize 的那个同步虽然说单词一样但场景不同意义就不一样这里的异步和同步指的是对结果的关注对象不同同步是指发出请求后发送方等待响应返回再离开而异步是指发出请求后离开接收方等收到响应后再去通知发送方这里的同步和异步与IO直接相关。异步拥有更高的性能和更好的并发同步则代码更简单更好实现且更安全准确在开发环境中我们可以按需选择同步还是异步我们这里用同步演示此时在这个方法中send一旦执行就会阻塞等待直到响应返回来我们还可以打印一下响应中的内容我们当前响应的内容都包含在这个response对象中了我们可以借助这个对象的属性拿到我们想要看到的内容可以执行程序看一下效果代码示例import java.time.Duration; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; public class MyHttpClient { public static void main(String[] args) throws IOException, InterruptedException { //创建一个 HttpClient 对象 //创建实例的时侯使用工厂方法 HttpClient client HttpClient.newHttpClient(); //创建请求对象 HttpRequest 表示一个 HTTP 请求 HttpRequest request HttpRequest.newBuilder() .uri(URI.create(https://www.sogou.com)) .GET() .headers(User-Agent,xxxx) .build(); //发送请求获取响应 HttpResponseString response client.send(request,HttpResponse.BodyHandlers.ofString()); //打印一下响应中的内容 System.out.println(response.statusCode()); System.out.println(response.headers()); System.out.println(response.body()); } }这样我们就成功构建了一个 HTTP 请求这个HTTP请求不仅可以帮我们测试服务器也可以用来实现其他功能。例如我们可以设计一个程序实现自动回关功能就是自动关注给我们博客留言的人其实这样的操作本质是一种 “ 爬虫 ”crawler真正要实现上述这样的操作还是有一定难度的基本大型的服务器都会有 “ 反爬虫 ” 机制大部分的爬虫程序都是违法的爬虫可能会对对方的网站服务器造成影响和损失我们还是要明确我们要做一个遵纪守法的好公民上述的请求是需要我们编写代码完成的那有没有什么工具不用编写代码就可以生成一个请求呢有的有的方法五不写代码的方案 - PostmanPostman 是一个专门的构造 HTTP 请求的工具软件下面介绍下载和使用方法进入官网点击下载安装即可Download Postman | Get Started for Freehttps://www.postman.com/downloads/我不知道为什么一直登不进去就先点了跳过我们先看看界面吧登录界面底下的那行字可以跳过可以先选择一个方法点击 send 就可以生成一个 HTTP 请求了不过不知道你们有没有发现Postmen 与多数程序不一样的一点它是一个有对象的程序hhh它的对象就是Postwoman除了常用的 Postmen 还有一款 “ 更适合中国宝宝体质 ” 的程序 ---Apifox不知道大家对这个程序有没有印象我们之前在搜索Postman的时侯首先跳出来的不是 Postman 而是这个 Apifox点击主页就可以直接下载了Apifox - API 文档、调试、Mock、测试一体化协作平台。拥有接口文档管理、接口调试、Mock、自动化测试等功能接口开发、测试、联调效率提升 10 倍。最好用的接口文档管理工具接口自动化测试工具。https://apifox.com/?utm_sourcebingutm_mediumsemutm_campaign%E9%AB%98%E8%BD%AC%E5%8C%96%E8%AF%8D-%E4%BA%A7%E5%93%81utm_contentPostmanutm_termpostmanmsclkid66d06055720b1ce2eee70a08b90641c3下载完登录后是这个界面我们以这个体验示例项目宠物商店为例方法四和方法五都需要大家多去尝试才能更熟练的掌握~
JAVAEE初阶 --- 构造HTTP请求
本文将重点介绍如何构造 HTTP 请求和构造 HTTP 请求的几种方法。方法一通过 form 表单构造 HTTP 请求纯 HTML 文案方法二通过 ajax 构造 HTTP 请求通过 javascript 构造 HTTP 请求方法三通过 Java socket 构造 HTTP请求以上三种方法在后续学习中会介绍这里先暂且不谈我们专注于下面两种方法方法四使用 Java 标准库的方案Java标准库提供了一种方案让我们可以直接访问 HTTP 服务器或者 HTTPS 的服务器我们直接编写代码构造 HTTP 请求1先创建一个 HttpClient 对象创建对象的时侯需要导入 Java标准库记得认准库名同样的类名的库有很多我们可以直接 通过new出这个对象只不过我们发现new完后变成了一种类似于匿名内部类重写我们需要去重写很多方法比较麻烦这个标准库中的类给我们提供了工厂方法我们可以直接使用这个工厂方法相较于直接new会简单许多2创建一个请求对象我们上述创建的是一个客户端对象我们还需要再创建一个请求对象我们后续需要通过这个客户端把我们的请求对象发送出去这里的 newBuilder 方法可以让我们用链式调用的方式构造出我们的请求提问什么是链式调用我们先创造一个对象然后在借助这个对象不断的调用它的方法这个写法说来话长它源于C#C# 是一种很像 Java 的一种语言但它又有自己的创新这个就是其中的一个链式调用可以根据我们自己的需求去调用它的方法调用后返回一个相同的对象我们就可以继续调用这个方法出现的背景或者说存在的价值本质上是 Java/C# 没有 “ 关键字参数 ” 这样的语法 “ 关键字参数 ” 的语法 Python 就有它在调用方法中可以指定实参和形参的名字不要求顺序匹配func(x 10,y 20)我们可以通过这个链式调用添加请求中的各种参数但是最后需要以 .build() 结尾3发送请求构造完请求后我们就需要通过 send 发送请求这里的send提供了两个版本分别是同步发送和异步发送问题什么是同步发送和异步发送注意这里的同步并不是我们之前学加锁的 synchronize 的那个同步虽然说单词一样但场景不同意义就不一样这里的异步和同步指的是对结果的关注对象不同同步是指发出请求后发送方等待响应返回再离开而异步是指发出请求后离开接收方等收到响应后再去通知发送方这里的同步和异步与IO直接相关。异步拥有更高的性能和更好的并发同步则代码更简单更好实现且更安全准确在开发环境中我们可以按需选择同步还是异步我们这里用同步演示此时在这个方法中send一旦执行就会阻塞等待直到响应返回来我们还可以打印一下响应中的内容我们当前响应的内容都包含在这个response对象中了我们可以借助这个对象的属性拿到我们想要看到的内容可以执行程序看一下效果代码示例import java.time.Duration; import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Executor; public class MyHttpClient { public static void main(String[] args) throws IOException, InterruptedException { //创建一个 HttpClient 对象 //创建实例的时侯使用工厂方法 HttpClient client HttpClient.newHttpClient(); //创建请求对象 HttpRequest 表示一个 HTTP 请求 HttpRequest request HttpRequest.newBuilder() .uri(URI.create(https://www.sogou.com)) .GET() .headers(User-Agent,xxxx) .build(); //发送请求获取响应 HttpResponseString response client.send(request,HttpResponse.BodyHandlers.ofString()); //打印一下响应中的内容 System.out.println(response.statusCode()); System.out.println(response.headers()); System.out.println(response.body()); } }这样我们就成功构建了一个 HTTP 请求这个HTTP请求不仅可以帮我们测试服务器也可以用来实现其他功能。例如我们可以设计一个程序实现自动回关功能就是自动关注给我们博客留言的人其实这样的操作本质是一种 “ 爬虫 ”crawler真正要实现上述这样的操作还是有一定难度的基本大型的服务器都会有 “ 反爬虫 ” 机制大部分的爬虫程序都是违法的爬虫可能会对对方的网站服务器造成影响和损失我们还是要明确我们要做一个遵纪守法的好公民上述的请求是需要我们编写代码完成的那有没有什么工具不用编写代码就可以生成一个请求呢有的有的方法五不写代码的方案 - PostmanPostman 是一个专门的构造 HTTP 请求的工具软件下面介绍下载和使用方法进入官网点击下载安装即可Download Postman | Get Started for Freehttps://www.postman.com/downloads/我不知道为什么一直登不进去就先点了跳过我们先看看界面吧登录界面底下的那行字可以跳过可以先选择一个方法点击 send 就可以生成一个 HTTP 请求了不过不知道你们有没有发现Postmen 与多数程序不一样的一点它是一个有对象的程序hhh它的对象就是Postwoman除了常用的 Postmen 还有一款 “ 更适合中国宝宝体质 ” 的程序 ---Apifox不知道大家对这个程序有没有印象我们之前在搜索Postman的时侯首先跳出来的不是 Postman 而是这个 Apifox点击主页就可以直接下载了Apifox - API 文档、调试、Mock、测试一体化协作平台。拥有接口文档管理、接口调试、Mock、自动化测试等功能接口开发、测试、联调效率提升 10 倍。最好用的接口文档管理工具接口自动化测试工具。https://apifox.com/?utm_sourcebingutm_mediumsemutm_campaign%E9%AB%98%E8%BD%AC%E5%8C%96%E8%AF%8D-%E4%BA%A7%E5%93%81utm_contentPostmanutm_termpostmanmsclkid66d06055720b1ce2eee70a08b90641c3下载完登录后是这个界面我们以这个体验示例项目宠物商店为例方法四和方法五都需要大家多去尝试才能更熟练的掌握~