gpt4 book ai didi

java - JEE8有没有取消HTTP 2请求处理的功能

转载 作者:可可西里 更新时间:2023-11-01 16:35:41 32 4
gpt4 key购买 nike

HTTP 1.1 没有任何机制要求服务器取消请求。可以从 HttpURLConnection 获取输入/输出/错误流并关闭它们。这将在客户端抛出 IOException,允许客户端在取消后进行清理。 HTTP 1.1 的“持久”或“keepAlive”TCP 连接将继续存在以供将来请求使用。因此,服务器在尝试写入并失败之前不会了解客户端的这些事件。

HTTP 2 提供了一个名为 RST_STREAM 的单独框架来关闭流或取消触发的请求。由于 Java 9 HttpClient 允许我们发出返回 CompletableFuture 的异步 HTTP 请求,现在有一种使用 cancel() 取消正在进行的请求的更优雅的方法 CompletableFuture 的方法。

我的问题:

  1. 调用 cancel() 时,Java 9+ 版本是否真的将 RST_STREAM 发送到服务器?
  2. JEE8 是否提供任何机制来中断在收到 RST_STREAM 时针对 HTTP 请求执行的业务逻辑?或 future 版本的任何计划?

最佳答案

在 Java 11 中,要取消使用 java.net.HttpClient 的 HTTP/2 请求,您必须提供自己的 BodySubscriber(或包装提供的构建之一-in) 并取消 Flow.Subscription。这应该会重置 HTTP/2 流。

关于java - JEE8有没有取消HTTP 2请求处理的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54020329/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com