模块 java.net.http

接口 HttpResponse.PushPromiseHandler<T>

类型参数:
T - 推送承诺响应主体类型
封闭接口:
HttpResponse<T>

public static interface HttpResponse.PushPromiseHandler<T>
推送承诺的处理程序。

A 推动承诺是 HTTP/2 服务在检索发起的客户端发送的请求时发送的合成请求。服务可能通过检查发起请求确定客户端可能需要承诺的资源,因此以推送承诺的形式向客户端推送合成推送请求。客户端可以选择接受或拒绝推送承诺请求。

推送承诺请求可能会被接收到发起客户端发送的请求的响应主体已被完全接收到的程度。然而,推送承诺响应的交付与对发起客户端发送的请求的响应的交付并不协调。

自从:
11
  • 方法详情

    • applyPushPromise

      void applyPushPromise(HttpRequest  initiatingRequest, HttpRequest  pushPromiseRequest, Function <HttpResponse.BodyHandler <T >,CompletableFuture <HttpResponse <T >>> acceptor)
      传入推送承诺的通知。

      对于收到的每个推送承诺,都会调用一次此方法,直到完全收到发起客户端发送的请求的响应主体为止。

      通过调用给定的 acceptor 函数接受推送承诺。 acceptor 函数必须传递一个非空的 BodyHandler ,用于处理承诺的响应主体。 acceptor 函数将返回一个 CompletableFuture 完成承诺的响应。

      如果 acceptor 函数未成功调用,则推送承诺将被拒绝。如果多次调用 acceptor 函数将抛出 IllegalStateException

      参数:
      initiatingRequest - 发起客户端发送请求
      pushPromiseRequest - 合成推送请求
      acceptor - 必须成功调用才能接受推送承诺的接受器函数
    • of

      返回一个推送承诺处理程序,该处理程序将推送承诺及其响应累积到给定的map中。

      对于接受的每个推送承诺,条目都会添加到给定的map中。条目的键是推送请求,条目的值是一个 CompletableFuture,它以对应于键的推送请求的响应完成。如果map中已经有一个键为equal的条目,则推送请求将被拒绝/取消。如果推送请求与其发起请求的来源不同,则该推送请求将被拒绝/取消。

      当收到并接受推送承诺时,条目会尽快添加到给定的map中。这样,使用像缓存这样的映射的代码可以确定服务是否已发出推送承诺,并避免发出可能不必要的请求。

      推送承诺响应的交付与对发起客户端发送的请求的响应的交付不协调。然而,当发起客户端发送的请求的响应主体已被完全接收时,映射将保证完全填充,即不会添加更多条目。map中包含的个人 CompletableFutures 此时可能已经完成,也可能尚未完成。

      类型参数:
      T - 推送承诺响应主体类型
      参数:
      pushPromiseHandler - 用于推送承诺的主体处理程序
      pushPromisesMap - 用于累积推送承诺的map
      返回:
      推送承诺处理程序