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 Detail

      • sendAsync

        Promise<Response,​NeverThrowsException> sendAsync​(Request request)
        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