Class ClientRequestBase<T extends ClientRequest<T>,R extends HttpClientResponse>

java.lang.Object
io.helidon.webclient.api.ClientRequestBase<T,R>
Type Parameters:
T - type of the request
R - type of the response
All Implemented Interfaces:
ClientRequest<T>, FullClientRequest<T>
Direct Known Subclasses:
HttpClientRequest

public abstract class ClientRequestBase<T extends ClientRequest<T>,R extends HttpClientResponse> extends Object implements FullClientRequest<T>
Abstract base implementation of an HTTP client. Provides helpful methods to handle cookies, client services etc.
  • Field Details

    • USER_AGENT_HEADER

      public static final io.helidon.http.Header USER_AGENT_HEADER
      Helidon user agent request header.
    • PROXY_CONNECTION

      public static final io.helidon.http.Header PROXY_CONNECTION
      Proxy connection header.
  • Constructor Details

  • Method Details

    • tls

      public T tls(Tls tls)
      Description copied from interface: ClientRequest
      TLS configuration for this specific request.
      Specified by:
      tls in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      tls - tls configuration
      Returns:
      updated request
    • uri

      public T uri(URI uri)
      Description copied from interface: ClientRequest
      Configure URI.
      Specified by:
      uri in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      uri - uri to resolve against base URI, or to use if absolute
      Returns:
      updated request
    • uri

      public T uri(ClientUri uri)
      Description copied from interface: ClientRequest
      Configure request URI. This always replaces the existing URI (even if base URI is configured).
      Specified by:
      uri in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      uri - uri to resolve against base URI, or to use if absolute
      Returns:
      updated request
    • path

      public T path(String uri)
      Description copied from interface: ClientRequest
      Configure path to call.
      Specified by:
      path in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      uri - path
      Returns:
      updated request
    • uri

      public T uri(String uri)
      Description copied from interface: ClientRequest
      Configure URI.
      Specified by:
      uri in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      uri - uri to resolve against base URI, or to use if absolute
      Returns:
      updated request
    • resolvedUri

      public ClientUri resolvedUri()
      Description copied from interface: ClientRequest
      Resolved URI that will be used to invoke this request.
      Specified by:
      resolvedUri in interface ClientRequest<T extends ClientRequest<T>>
      Returns:
      URI to invoke
    • headers

      public io.helidon.http.ClientRequestHeaders headers()
      Description copied from interface: ClientRequest
      Get a (mutable) instance of outgoing headers.
      Specified by:
      headers in interface ClientRequest<T extends ClientRequest<T>>
      Returns:
      client request headers
    • header

      public T header(io.helidon.http.Header header)
      Description copied from interface: ClientRequest
      Set an HTTP header.
      Specified by:
      header in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      header - header to set
      Returns:
      updated request
    • headers

      public T headers(io.helidon.http.Headers headers)
      Description copied from interface: ClientRequest
      Configure headers. Copy all headers from supplied Headers instance.
      Specified by:
      headers in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      headers - to copy
      Returns:
      updated request
    • headers

      public T headers(Consumer<io.helidon.http.ClientRequestHeaders> headersConsumer)
      Description copied from interface: ClientRequest
      Update headers.
      Specified by:
      headers in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      headersConsumer - consumer of client request headers
      Returns:
      updated request
    • fragment

      public T fragment(io.helidon.common.uri.UriFragment fragment)
      Description copied from interface: ClientRequest
      Set fragment of the URI.
      Specified by:
      fragment in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      fragment - fragment
      Returns:
      updated request
    • skipUriEncoding

      public T skipUriEncoding(boolean skip)
      Description copied from interface: ClientRequest
      Disable uri encoding.
      Specified by:
      skipUriEncoding in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      skip - set to true to disable URI encoding (false by default)
      Returns:
      updated client request
    • queryParam

      public T queryParam(String name, String... values)
      Description copied from interface: ClientRequest
      Add query parameter.
      Specified by:
      queryParam in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      name - name of parameter
      values - value(s) of parameter
      Returns:
      updated request
    • property

      public T property(String propertyName, String propertyValue)
      Description copied from interface: ClientRequest
      Add a property to be used by this request.
      Specified by:
      property in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      propertyName - property name
      propertyValue - property value
      Returns:
      updated builder instance
    • pathParam

      public T pathParam(String name, String value)
      Description copied from interface: ClientRequest
      Replace a placeholder in URI with an actual value.
      Specified by:
      pathParam in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      name - name of parameter
      value - value of parameter
      Returns:
      updated request
    • followRedirects

      public T followRedirects(boolean followRedirects)
      Description copied from interface: ClientRequest
      Whether to follow redirects.
      Specified by:
      followRedirects in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      followRedirects - follow redirects
      Returns:
      updated request
    • maxRedirects

      public T maxRedirects(int maxRedirects)
      Description copied from interface: ClientRequest
      Max number of the followed redirects.
      Specified by:
      maxRedirects in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      maxRedirects - max followed redirects
      Returns:
      updated request
    • connection

      public T connection(ClientConnection connection)
      Description copied from interface: ClientRequest
      This method is for explicit connection use by this request.
      Specified by:
      connection in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      connection - connection to use for this request
      Returns:
      updated client request
    • keepAlive

      public T keepAlive(boolean keepAlive)
      Description copied from interface: ClientRequest
      Whether to use keep alive with this request.
      Specified by:
      keepAlive in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      keepAlive - use keep alive
      Returns:
      updated client request
    • readTimeout

      public T readTimeout(Duration readTimeout)
      Description copied from interface: ClientRequest
      Read timeout for this request.
      Specified by:
      readTimeout in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      readTimeout - response read timeout
      Returns:
      updated client request
    • readContinueTimeout

      public T readContinueTimeout(Duration readContinueTimeout)
      Description copied from interface: ClientRequest
      Read 100-Continue timeout for this request. This read timeout is used when 100-Continue is sent by the client, before it sends an entity.
      Specified by:
      readContinueTimeout in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      readContinueTimeout - read 100-Continue timeout duration
      Returns:
      updated client request
      See Also:
      • HttpClientConfigBlueprint.readContinueTimeout()
    • proxy

      public T proxy(Proxy proxy)
      Description copied from interface: ClientRequest
      Proxy configuration for this specific request.
      Specified by:
      proxy in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      proxy - proxy configuration
      Returns:
      updated request
    • request

      public R request()
      Description copied from interface: ClientRequest
      Request without an entity.
      Specified by:
      request in interface ClientRequest<T extends ClientRequest<T>>
      Returns:
      response
    • submit

      public final R submit(Object entity)
      Description copied from interface: ClientRequest
      Submit an entity.
      Specified by:
      submit in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      entity - request entity
      Returns:
      response
    • outputStream

      public final R outputStream(ClientRequest.OutputStreamHandler outputStreamConsumer)
      Description copied from interface: ClientRequest
      Handle output stream and submit the request.
      Specified by:
      outputStream in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      outputStreamConsumer - output stream to write request entity
      Returns:
      response
    • sendExpectContinue

      public T sendExpectContinue(boolean sendExpectContinue)
      Description copied from interface: ClientRequest
      Whether Expect 100-Continue header is sent to verify server availability before sending an entity. Can be used to override the setting inherited from HttpClientConfigBlueprint.sendExpectContinue() on a per-request basis.
      Specified by:
      sendExpectContinue in interface ClientRequest<T extends ClientRequest<T>>
      Parameters:
      sendExpectContinue - value to override behavior for a single request
      Returns:
      updated client request
    • additionalHeaders

      protected void additionalHeaders()
      Append additional headers before sending the request.
    • method

      public io.helidon.http.Method method()
      HTTP method to be invoked.
      Specified by:
      method in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      HTTP method
    • properties

      public Map<String,String> properties()
      Properties configured by a user or by other components.
      Specified by:
      properties in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      properties
    • followRedirects

      public boolean followRedirects()
      Description copied from interface: ClientRequest
      Whether to follow redirects.
      Specified by:
      followRedirects in interface ClientRequest<T extends ClientRequest<T>>
      Returns:
      follow redirects
    • maxRedirects

      public int maxRedirects()
      Description copied from interface: ClientRequest
      Maximal number of redirects to follow. This is to prevent infinite redirects.
      Specified by:
      maxRedirects in interface ClientRequest<T extends ClientRequest<T>>
      Returns:
      max number of redirects
    • tls

      public Tls tls()
      Description copied from interface: FullClientRequest
      TLS configuration (may be disabled - e.g. use plaintext).
      Specified by:
      tls in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      TLS configuration
    • proxy

      public Proxy proxy()
      Description copied from interface: FullClientRequest
      Proxy configuration (may be no-proxy).
      Specified by:
      proxy in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      proxy
    • connection

      public Optional<ClientConnection> connection()
      Description copied from interface: FullClientRequest
      Possible explicit connection to use (such as when using a proxy).
      Specified by:
      connection in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      client connection if explicitly defined
    • pathParams

      public Map<String,String> pathParams()
      Description copied from interface: FullClientRequest
      Replace a placeholder in URI with an actual value.
      Specified by:
      pathParams in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      a map of path parameters
    • uri

      public ClientUri uri()
      Description copied from interface: FullClientRequest
      URI of this request.
      Specified by:
      uri in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      client URI
    • requestId

      public String requestId()
      Description copied from interface: FullClientRequest
      Request ID.
      Specified by:
      requestId in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      id of this request
    • readTimeout

      public Duration readTimeout()
      Description copied from interface: FullClientRequest
      Read timeout.
      Specified by:
      readTimeout in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      read timeout of this request
    • readContinueTimeout

      public Duration readContinueTimeout()
      Description copied from interface: FullClientRequest
      Read 100-Continue timeout.
      Specified by:
      readContinueTimeout in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      read 100-Continue timeout of this request
    • keepAlive

      public boolean keepAlive()
      Description copied from interface: FullClientRequest
      Whether to use keep-alive connection (if relevant for the used HTTP version).
      Specified by:
      keepAlive in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      whether to use keep alive
    • skipUriEncoding

      public boolean skipUriEncoding()
      Description copied from interface: FullClientRequest
      Whether to skip URI encoding.
      Specified by:
      skipUriEncoding in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      whether to skip encoding
    • sendExpectContinue

      public Optional<Boolean> sendExpectContinue()
      Description copied from interface: FullClientRequest
      Whether Expect 100-Continue header is sent to verify server availability before sending an entity. Overrides the setting from HttpClientConfigBlueprint.sendExpectContinue().
      Specified by:
      sendExpectContinue in interface FullClientRequest<T extends ClientRequest<T>>
      Returns:
      Expect 100-Continue value if set
    • doSubmit

      protected abstract R doSubmit(Object entity)
    • doOutputStream

      protected abstract R doOutputStream(ClientRequest.OutputStreamHandler outputStreamHandler)
    • invokeServices

      Invoke configured client services.
      Parameters:
      httpCallChain - invocation of the HTTP request (the actual network call)
      whenSent - completable future to be completed when the request is sent over the network
      whenComplete - completable future to be completed when the request/response interaction finishes
      usedUri - URI configured on the request, combined with the base URI of the client
      Returns:
      web client service response
    • clientConfig

      protected HttpClientConfig clientConfig()
      Associated client configuration.
      Returns:
      client config
    • mediaContext

      protected io.helidon.http.media.MediaContext mediaContext()
      Media context configured for this request.
      Returns:
      media context
    • resolveUri

      protected ClientUri resolveUri(ClientUri toResolve)
      Resolve possible templated URI definition against the provided ClientUri, extracting possible query information into the provided writable query.
      Parameters:
      toResolve - client uri to update from the template
      Returns:
      updated client uri