Interface HttpClient

All Superinterfaces:
AutoCloseable, Closeable

public interface HttpClient extends Closeable
An SPI interface for HTTP Client implementations. A HttpClientProvider is loaded during construction of a new HTTP Client. The first available provider is selected and its HttpClientProvider.newHttpClient(org.forgerock.util.Options) method invoked in order to construct and configure a new HttpClient.

It is the responsibility of the caller to close the request and response messages.

     
     HttpClient client = ...
     try (Response response = client.sendAsync(...).getOrThrow()) {
       // consumes the response completely
     }
     
 

Note: Callers should not use try-with-resources pattern if they forward the response asynchronously (using a Promise for instance): the message would be emptied before the callbacks are applied.

  • Method Details

    • sendAsync

      Returns a Promise representing the asynchronous Response of the given request. If any (asynchronous) processing goes wrong, the promise still contains a Response (probably from the 4xx or 5xx status code family).

      The returned Promise contains the response returned from the server as-is. This is responsibility of the client to produce the appropriate error response (404, 500, ...) in case of processing or transport errors.

      This method should never throw any runtime exception. Exceptions must use the promise chain.

      Parameters:
      request - The HTTP request to send.
      Returns:
      A promise representing the pending HTTP response or any runtime exceptions that may occur.
    • close

      void close() throws IOException
      Completes all pending requests and release resources associated with underlying implementation.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException - if an I/O error occurs