-
- 参数类型
-
T
- 响应正文类型
- Enclosing interface:
- HttpResponse < T >
- Functional Interface:
- 这是一个功能接口,因此可以用作lambda表达式或方法引用的赋值目标。
@FunctionalInterfacepublic 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
- 回复信息 - 结果
- 身体用户
-
-