📅  最后修改于: 2023-12-03 14:42:12.721000             🧑  作者: Mango
Java 9 引入了新的 HTTP2 客户端 API,为开发人员提供了更好的网络编程体验。本文将介绍Java 9的HTTP2 客户端的特性,并提供一个简单的示例。
Java 9 的 HTTP2 客户端 API 提供以下特性:
下面是一个简单的使用新 HTTP2 客户端 API 发起 HTTP GET 请求的示例。
首先,我们需要导入 HTTP2 客户端 API 的包:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.concurrent.CompletableFuture;
然后,我们使用 HttpRequest.newBuilder()
方法创建一个 HTTP GET 请求:
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.example.com"))
.GET()
.build();
接着,我们使用 HttpClient.newHttpClient()
方法创建一个 HTTP 客户端:
HttpClient httpClient = HttpClient.newHttpClient();
最后,我们使用 httpClient.sendAsync()
方法发起异步请求并获取响应:
CompletableFuture<HttpResponse<String>> response =
httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString());
这里我们使用 HttpResponse.BodyHandlers.ofString()
来处理响应体,也可以使用 HttpResponse.BodyHandlers.ofByteArray()
来处理字节数组类型的响应体,或者自定义 HttpResponse.BodyHandler
来处理其他类型的响应体。
等到响应返回后,我们可以通过以下方式获取响应状态码和响应体:
int statusCode = response.get().statusCode();
String responseBody = response.get().body();
完整代码如下:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.concurrent.CompletableFuture;
public class HttpClientExample {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.example.com"))
.GET()
.build();
HttpClient httpClient = HttpClient.newHttpClient();
CompletableFuture<HttpResponse<String>> response =
httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString());
int statusCode = response.get().statusCode();
String responseBody = response.get().body();
System.out.println("Status Code:" + statusCode);
System.out.println("Response Body:" + responseBody);
}
}
值得注意的是,如果我们发送一个 POST 请求,并且希望附带一个 JSON 格式的请求体,我们可以使用以下方式构建请求:
String requestBody = "{\"username\":\"example\",\"password\":\"secret\"}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.example.com/login"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
当然,还有很多其他的用法,这篇文章只是对 Java 9 的 HTTP2 客户端 API 进行了一个简单介绍。希望对大家有所帮助。