jdk11新特性——标准Java异步HTTP客户端
Posted 小志的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdk11新特性——标准Java异步HTTP客户端相关的知识,希望对你有一定的参考价值。
目录
一、概述
- 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);
-
运行测试类,如下图所示,可以拿到服务端地址返回结果:
以上是关于jdk11新特性——标准Java异步HTTP客户端的主要内容,如果未能解决你的问题,请参考以下文章
JDK 11有望实现JEP 321: HTTP Client (Standard) 特性