-
- 参数类型
-
T- 响应正文类型
- Enclosing interface:
- HttpResponse < T >
- Functional Interface:
- 这是一个功能接口,因此可以用作lambda表达式或方法引用的赋值目标。
@FunctionalInterface public static interface HttpResponse.BodyHandler<T>
响应主体的处理程序。 类BodyHandlers提供了许多常见的主体处理程序的实现。BodyHandler接口允许在收到实际响应主体之前检查响应代码和标头,并负责创建响应BodySubscriber。BodySubscriber使用实际的响应主体字节,通常将它们转换为更高级别的Java类型。BodyHandler是一个获取ResponseInfo对象的函数; 并返回BodySubscriber。 当响应状态代码和标头可用时,但在收到响应正文字节之前,将调用BodyHandler。以下示例使用predefined body handlers中的一个始终以相同方式处理响应主体(将响应主体流式传输到文件)。
请注意,即使预定义的处理程序不检查响应代码,响应代码和标头也始终可以从HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://www.foo.com/")) .build(); client.sendAsync(request, BodyHandlers.ofFile(Paths.get("/tmp/f"))) .thenApply(HttpResponse::body) .thenAccept(System.out::println);HttpResponse中检索到。在第二个示例中,该函数根据状态代码返回不同的订户。
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http://www.foo.com/")) .build(); BodyHandler<Path> bodyHandler = (rspInfo) -> rspInfo.statusCode() == 200 ? BodySubscribers.ofFile(Paths.get("/tmp/f")) : BodySubscribers.replacing(Paths.get("/NULL")); client.sendAsync(request, bodyHandler) .thenApply(HttpResponse::body) .thenAccept(System.out::println);- 从以下版本开始:
- 11
- 另请参见:
-
HttpResponse.BodyHandlers
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 HttpResponse.BodySubscriber<T>apply(HttpResponse.ResponseInfo responseInfo)考虑给定的响应状态代码和标题,返回BodySubscriber。
-
-
-
方法详细信息
-
apply
HttpResponse.BodySubscriber<T> apply(HttpResponse.ResponseInfo responseInfo)
考虑给定的响应状态代码和标题,返回BodySubscriber。 在读取实际响应主体字节之前调用此方法,并且其实现必须返回BodySubscriber以使用响应主体字节。可以使用
discarding或replacing之一丢弃响应主体。- 参数
-
responseInfo- 回复信息 - 结果
- 身体用户
-
-