Java 11 HTTP 客户端 API
原文:https://www.studytonight.com/java-11/java-11-http-client-api
Java 11 增加了一个新的模块 java.net.http
和一个包 java.net.http
来定义 HTTP Client 和 WebSocket APIs。
这个包包含几个类和接口,为 HTTP 提供高级客户端接口,为 WebSocket 提供低级客户端接口。
我们可以使用这些类和接口来发送同步或异步请求。
接口列表
以下是 java.net.http 包的接口,可用于处理客户端请求和响应。
|
连接
|
描述
| |
HttpClient。builder〔t1〕
| HTTP 客户端的构建者。 | |
HttpRequest。BodyPublisher
| BodyPublisher 将高级 Java 对象转换成适合作为请求体发送的字节缓冲区流。 | |
HttpRequest.Builder
| HTTP 请求的构建者。 | |
http 响应〔t0〕
| 一个 HTTP 响应。 | |
http response(http 响应)。body handler〔t0〕
| 响应体的处理程序。 | |
http response(http 响应)。body subscriber〔t0〕
| BodySubscriber 使用响应体字节,并将它们转换为更高级别的 Java 类型。 | |
HttpResponse.PushPromiseHandler
| 推送承诺的处理程序。 | |
http 响应。响应信息
| 在最初收到响应时和处理正文之前,提供给 BodyHandler 的初始响应信息。 | |
WebSocket
| 一个网络套接字客户端。 | |
WebSocket.Builder
| 网络套接字客户端的构建者。 | |
WebSocket . listener-网路通讯协定
| WebSocket 的接收接口。 |
类别列表
以下是 java.net.http 包下的类,用于创建 HttpClient 和连接到主机。
|
班级
|
描述
| |
http client(http 客户端)
| 一个超文本传输协议客户端。 | |
HttpHeaders
| 一组 HTTP 头的只读视图。 | |
对象
| 一个 HTTP 请求。 | |
HttpRequest。BodyPublishers
| BodyPublisher 的实现,实现各种有用的发布器,例如从字符串或文件发布请求正文。 | |
http response(http 响应)。BodyHandlers(身体处理程序)
| BodyHandler 的实现,实现各种有用的处理程序,例如将响应体作为字符串处理,或将响应体流式传输到文件。 | |
http 响应。body 订户
| 实现各种有用订阅者的 BodySubscriber 实现,例如将响应正文字节转换为字符串,或将字节流式传输到文件。 |
举例时间:
在这个例子中,我们使用 HttpClient 向“study now . com”发送一个 get 请求。
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpClient.Redirect;
import java.net.http.HttpClient.Version;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.time.Duration;
public class Main {
public static void main(String[] args) throws IOException, InterruptedException {
HttpRequest request = HttpRequest.newBuilder()
.GET()
.uri(URI.create("https://www.studytonight.com"))
.build();
HttpClient httpClient = HttpClient.newBuilder()
.version(Version.HTTP_2)
.followRedirects(Redirect.NORMAL)
.connectTimeout(Duration.ofSeconds(20))
.build();
HttpResponse<String> response = httpClient.send(request, BodyHandlers.ofString());
System.out.println(response.statusCode());
}
}
200