目录
- 一、概述
- 二、HTTP Client 同步发送请求使用示例
- 2.1、创建简单的服务端
- 2.2、创建HTTP Client 同步代码
- 三、HTTP Client 异步发送请求使用示例
- 3.1、创建简单的服务端(参考2.1)
- 3.2、创建HTTP Client 异步代码
一、概述
- Java 9 开始引入的一个处理 HTTP 请求的的 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态,你可以在 java.net 包中找到这个 API。
二、HTTP Client 同步发送请求使用示例
2.1、创建简单的服务端
-
创建springboot项目,创建简单测试类,通过浏览器该请求,模拟服务端即可,代码如下:
package com.xz.jdk11.day1; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RequestMapping("/test") @RestController public class TestController { @RequestMapping("/hello") public String hello(){ return "123456"; } }
-
启动springboot项目,浏览器输入访问地址,右下图可知,可正常返回结果即可,至此,模拟的服务端已完成。
2.2、创建HTTP Client 同步代码
-
创建HTTP Client 同步代码示例,访问地址为2.1步骤中的服务地址
package com.xz.jdk11.day1; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; public class Test5 { public static void main(String[] args) throws Exception{ t1(); } /** * HTTP Client 同步简单使用示例 * */ public static void t1() throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder(URI.create("http://127.0.0.1:8080/test/hello")).build(); HttpResponse.BodyHandler<String> responseBodyHandler = HttpResponse.BodyHandlers.ofString(); HttpResponse<String> response = client.send(request, responseBodyHandler); String body = response.body(); System.out.println(body); } }
-
运行测试类,如下图所示,可以拿到服务端地址返回结果:
三、HTTP Client 异步发送请求使用示例
3.1、创建简单的服务端(参考2.1)
3.2、创建HTTP Client 异步代码
-
创建HTTP Client 异步代码示例
package com.xz.jdk11.day1; import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; public class Test5 { public static void main(String[] args) throws Exception{ t1(); } /** * HTTP Client 异步发送请求使用示例 * */ public static void t1() throws ExecutionException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder(URI.create("http://127.0.0.1:8080/test/hello")).build(); HttpResponse.BodyHandler<String> responseBodyHandler = HttpResponse.BodyHandlers.ofString(); CompletableFuture<HttpResponse<String>> sendAsync = client.sendAsync(request, responseBodyHandler); HttpResponse<String> response = sendAsync.get(); String body = response.body(); System.out.println(body); } }
-
运行测试类,如下图所示,可以拿到服务端地址返回结果: