代码之家  ›  专栏  ›  技术社区  ›  Saptarshi Basu

jee8中是否有取消HTTP 2请求处理的功能?

  •  2
  • Saptarshi Basu  · 技术社区  · 7 年前

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

    HTTP 2提供了一个单独的框架,名为 RST_STREAM 关闭流或取消已激发的请求。自从Java 9 HttpClient 允许我们进行异步HTTP请求,返回 CompletableFuture ,现在有一种更优雅的方法可以使用 cancel() 方法 复杂的未来 .

    我的问题:

    1. Java 9 +发行版是否实际发送 RSTH流 到服务器的时间 取消() 是否被调用?
    2. JEE8是否提供任何机制,在收到HTTP请求时中断对HTTP请求执行的业务逻辑? RSTH流 ?或者未来版本的计划?
    1 回复  |  直到 7 年前
        1
  •  1
  •   daniel    7 年前

    在Java 11中取消一个HTTP/2请求 java.net.HttpClient 你必须提供你自己的 BodySubscriber (或包装其中一个提供的内置项)并取消 Flow.Subscription . 这应该重置HTTP/2流。