-
- 参数类型
-
T- 响应体类型。
- Enclosing class:
- HttpResponse < T >
- Functional Interface:
- 这是一个功能界面,因此可以用作lambda表达式或方法引用的赋值对象。
@FunctionalInterface public static interface HttpResponse.BodyHandler<T>
响应机构的处理程序。
Incubating Feature.将在以后的版本中删除。这是一个函数,它需要两个参数:响应状态代码和响应头,并返回一个
HttpResponse.BodyProcessor。 该函数始终在响应体被读取之前调用。 它的实现可能会检查状态代码或标题,并且必须决定是接受响应体还是丢弃它,如果接受它,那么该如何处理它。定义了一些未使用状态代码或头部(意味着身体始终被接受)的预定义实现:
-
asByteArray() -
asByteArrayConsumer(Consumer) -
asFileDownload(Path,OpenOption...) -
discard(Object) -
asString(Charset)
这些实现返回等效的
HttpResponse.BodyProcessor。 或者,处理程序可用于检查状态代码或标题,并根据需要返回不同的主体处理器。处理程序使用示例
第一个例子使用一个预定义的处理程序函数,忽略响应头和状态,并且始终以相同的方式处理响应体。
请注意,尽管这些预定义的处理程序忽略了状态代码和标题,HttpResponse<Path> resp = HttpRequest .create(URI.create("http://www.foo.com")) .GET() .response(BodyHandler.asFile(Paths.get("/tmp/f")));HttpResponse当返回时,这些信息仍然可以从HttpResponse访问。在第二个例子中,该函数根据状态代码返回不同的处理器。
HttpResponse<Path> resp1 = HttpRequest .create(URI.create("http://www.foo.com")) .GET() .response( (status, headers) -> status == 200 ? BodyProcessor.asFile(Paths.get("/tmp/f")) : BodyProcessor.discard(Paths.get("/NULL")));
-
-
方法摘要
-
-
-
方法详细信息
-
apply
HttpResponse.BodyProcessor<T> apply(int statusCode, HttpHeaders responseHeaders)
考虑到给定的响应状态代码和标题,返回一个BodyProcessor。 阅读正文之前该方法总是叫其实现都可以决定,以保持身体和存储在某个地方,否则丢弃它,通过返回BodyProcessor从返回discard()。- 参数
-
statusCode- 收到的HTTP状态码 -
responseHeaders- 收到的响应头 - 结果
- 一个响应体处理程序
-
discard
static <U> HttpResponse.BodyHandler<U> discard(U value)
返回响应体处理程序,该处理程序丢弃响应正文并使用给定值作为替代。- 参数类型
-
U- 响应体类型 - 参数
-
value- U值作为身体返回 - 结果
- 一个响应体处理程序
-
asString
static HttpResponse.BodyHandler<String> asString(Charset charset)
返回BodyHandler<String>返回一个BodyProcessor<String>从获得BodyProcessor.asString(Charset)。 如果提供了一个字符集,则使用它进行解码。 如果字符集为null则处理器尝试从Content-encoding头中确定字符集。 如果不支持该字符集,则使用UTF_8。- 参数
-
charset- 将身体解释为字符集的名称。 如果是null然后从Content-encoding头确定字符集 - 结果
- 一个响应体处理程序
-
asFile
static HttpResponse.BodyHandler<Path> asFile(Path file)
返回BodyHandler<Path>返回一个BodyProcessor<Path>从获得BodyProcessor.asFile(Path)。当返回
HttpResponse对象时,身体已经完全写入文件,而HttpResponse.body()返回了对其Path的引用。- 参数
-
file- 存储身体的文件 - 结果
- 一个响应体处理程序
-
asFileDownload
static HttpResponse.BodyHandler<Path> asFileDownload(Path directory, OpenOption... openOptions)
返回一个BodyHandler<Path>,返回一个指定了下载目录的BodyProcessor<Path>,但文件名是从Content-Disposition响应头获取的。Content-Disposition标头必须指定附件类型,并且还必须包含filename参数。 如果文件名指定多个路径组件,则仅使用最终组件作为文件名(具有给定的目录名称)。 当返回HttpResponse对象时,身体已经完全写入文件,并且HttpResponse.body()返回一个Path对象的文件。 返回的Path是提供的目录名称和服务器提供的文件名的组合。 如果目标目录不存在或不能写入,则响应将失败,并显示IOException。- 参数
-
directory- 存储文件的目录 -
openOptions- 打开选项 - 结果
- 一个响应体处理程序
-
asFile
static HttpResponse.BodyHandler<Path> asFile(Path file, OpenOption... openOptions)
返回BodyHandler<Path>返回一个BodyProcessor<Path>从获得BodyProcessor.asFile(Path,OpenOption...)。当返回
HttpResponse对象时,正文已被完全写入该文件,而HttpResponse.body()返回对其Path的引用。- 参数
-
file- 存储身体的文件名 -
openOptions- 打开/创建文件时使用的任何选项 - 结果
- 一个响应体处理程序
-
asByteArrayConsumer
static HttpResponse.BodyHandler<Void> asByteArrayConsumer(Consumer<Optional<byte[]>> consumer)
返回一个BodyHandler<Void>,返回一个从<Void>获得的BodyProcessor<Void> 。当返回
HttpResponse对象时,身体已被完全写入消费者。- 参数
-
consumer- 消费者接受响应机构 - 结果
- 一个响应体处理程序
-
asByteArray
static HttpResponse.BodyHandler<byte[]> asByteArray()
返回一个BodyHandler<byte[]>,返回一个从BodyProcessor.asByteArray()获得的BodyProcessor<byte[]>。当返回
HttpResponse对象时,主体已被完全写入字节数组。- 结果
- 一个响应体处理程序
-
asString
static HttpResponse.BodyHandler<String> asString()
返回BodyHandler<String>返回一个BodyProcessor<String>从获得BodyProcessor.asString(Charset)。 使用Content-encoding响应标头中指定的字符集对身体进行解码。 如果没有这样的标题,或者不支持字符集,则使用UTF_8。当返回
HttpResponse对象时,身体已被完全写入字符串。- 结果
- 一个响应体处理程序
-
-