Interface HttpClient

All Superinterfaces:
AutoCloseable, Closeable, LifeCycle<HttpClient>
All Known Subinterfaces:
JdkHttpClient, StreamingHttpClient
All Known Implementing Classes:
DefaultHttpClient, DefaultJdkHttpClient

public interface HttpClient extends Closeable, LifeCycle<HttpClient>
A non-blocking HTTP client interface designed around the Micronaut API and Reactive Streams.
Since:
1.0
Author:
Graeme Rocher
  • Field Details

    • DEFAULT_ERROR_TYPE

      static final Argument<JsonError> DEFAULT_ERROR_TYPE
      The default error type.
  • Method Details

    • toBlocking

      BlockingHttpClient toBlocking()
      Returns:
      A blocking HTTP client suitable for testing and non-production scenarios.
    • exchange

      <I, O, E> Publisher<HttpResponse<O>> exchange(@NonNull @NonNull HttpRequest<I> request, @NonNull @NonNull Argument<O> bodyType, @NonNull @NonNull Argument<E> errorType)

      Perform an HTTP request for the given request object emitting the full HTTP response from returned Publisher and converting the response body to the specified type.

      This method will send a Content-Length header and except a content length header the response and is designed for simple non-streaming exchanges of data

      By default the exchange Content-Type is application/json, unless otherwise specified in the passed HttpRequest

      Type Parameters:
      I - The request body type
      O - The response body type
      E - The error type
      Parameters:
      request - The HttpRequest to execute
      bodyType - The body type
      errorType - The error type
      Returns:
      A Publisher that emits the full HttpResponse object
    • exchange

      default <I, O> Publisher<HttpResponse<O>> exchange(@NonNull @NonNull HttpRequest<I> request, @NonNull @NonNull Argument<O> bodyType)

      Perform an HTTP request for the given request object emitting the full HTTP response from returned Publisher and converting the response body to the specified type.

      This method will send a Content-Length header and except a content length header the response and is designed for simple non-streaming exchanges of data

      By default the exchange Content-Type is application/json, unless otherwise specified in the passed HttpRequest

      Type Parameters:
      I - The request body type
      O - The response body type
      Parameters:
      request - The HttpRequest to execute
      bodyType - The body type
      Returns:
      A Publisher that emits the full HttpResponse object
    • exchange

      default <I> Publisher<HttpResponse<ByteBuffer>> exchange(@NonNull @NonNull HttpRequest<I> request)
      Perform an HTTP request for the given request object emitting the full HTTP response from returned Publisher.
      Type Parameters:
      I - The request body type
      Parameters:
      request - The HttpRequest to execute
      Returns:
      A Publisher that emits the full HttpResponse object
    • exchange

      Perform an HTTP GET request for the given request object emitting the full HTTP response from returned Publisher.
      Parameters:
      uri - The Uri
      Returns:
      A Publisher that emits the full HttpResponse object
    • exchange

      default <O> Publisher<HttpResponse<O>> exchange(@NonNull @NonNull String uri, @NonNull @NonNull Class<O> bodyType)
      Perform an HTTP GET request for the given request object emitting the full HTTP response from returned Publisher.
      Type Parameters:
      O - The response body type
      Parameters:
      uri - The request URI
      bodyType - The body type
      Returns:
      A Publisher that emits the full HttpResponse object
    • exchange

      default <I, O> Publisher<HttpResponse<O>> exchange(@NonNull @NonNull HttpRequest<I> request, @NonNull @NonNull Class<O> bodyType)
      Perform an HTTP request for the given request object emitting the full HTTP response from returned Publisher and converting the response body to the specified type.
      Type Parameters:
      I - The request body type
      O - The response body type
      Parameters:
      request - The HttpRequest to execute
      bodyType - The body type
      Returns:
      A Publisher that emits the full HttpResponse object
    • retrieve

      default <I, O, E> Publisher<O> retrieve(@NonNull @NonNull HttpRequest<I> request, @NonNull @NonNull Argument<O> bodyType, @NonNull @NonNull Argument<E> errorType)
      Perform an HTTP request for the given request object emitting the full HTTP response from returned Publisher and converting the response body to the specified type.
      Type Parameters:
      I - The request body type
      O - The response body type
      E - The error type
      Parameters:
      request - The HttpRequest to execute
      bodyType - The body type
      errorType - The error type
      Returns:
      A Publisher that emits a result of the given type
    • retrieve

      default <I, O> Publisher<O> retrieve(@NonNull @NonNull HttpRequest<I> request, @NonNull @NonNull Argument<O> bodyType)
      Perform an HTTP request for the given request object emitting the full HTTP response from returned Publisher and converting the response body to the specified type.
      Type Parameters:
      I - The request body type
      O - The response body type
      Parameters:
      request - The HttpRequest to execute
      bodyType - The body type
      Returns:
      A Publisher that emits a result of the given type
    • retrieve

      default <I, O> Publisher<O> retrieve(@NonNull @NonNull HttpRequest<I> request, @NonNull @NonNull Class<O> bodyType)
      Perform an HTTP request for the given request object emitting the full HTTP response from returned Publisher and converting the response body to the specified type.
      Type Parameters:
      I - The request body type
      O - The response body type
      Parameters:
      request - The HttpRequest to execute
      bodyType - The body type
      Returns:
      A Publisher that emits a result of the given type
    • retrieve

      default <I> Publisher<String> retrieve(@NonNull @NonNull HttpRequest<I> request)
      Perform an HTTP request for the given request object emitting the full HTTP response from returned Publisher and converting the response body to the specified type.
      Type Parameters:
      I - The request body type
      Parameters:
      request - The HttpRequest to execute
      Returns:
      A Publisher that emits String result
    • retrieve

      default Publisher<String> retrieve(@NonNull @NonNull String uri)
      Perform an HTTP GET request for the given request object emitting the full HTTP response from returned Publisher and converting the response body to the specified type.
      Parameters:
      uri - The URI
      Returns:
      A Publisher that emits String result
    • refresh

      default HttpClient refresh()
      Description copied from interface: LifeCycle
      Refreshes the current life cycle object. Effectively this calls LifeCycle.stop() followed by LifeCycle.start().
      Specified by:
      refresh in interface LifeCycle<HttpClient>
      Returns:
      This lifecycle component
    • create

      static HttpClient create(@Nullable @Nullable URL url)
      Create a new HttpClient. Note that this method should only be used outside of the context of a Micronaut application. The returned HttpClient is not subject to dependency injection. The creator is responsible for closing the client to avoid leaking connections. Within a Micronaut application use Inject to inject a client instead.
      Parameters:
      url - The base URL
      Returns:
      The client
    • create

      Create a new HttpClient with the specified configuration. Note that this method should only be used outside of the context of an application. Within Micronaut use Inject to inject a client instead
      Parameters:
      url - The base URL
      configuration - the client configuration
      Returns:
      The client
      Since:
      2.2.0