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