Class HttpClient

  • All Implemented Interfaces:
    Measured

    public class HttpClient
    extends Object
    implements Measured
    An asynchronous HTTP client.

    It allows you to make requests to HTTP servers, and a single client can make requests to any server.

    It also allows you to open WebSockets to servers.

    The client can also pool HTTP connections.

    For pooling to occur, keep-alive must be true on the HttpClientOptions (default is true). In this case connections will be pooled and re-used if there are pending HTTP requests waiting to get a connection, otherwise they will be closed.

    This gives the benefits of keep alive when the client is loaded but means we don't keep connections hanging around unnecessarily when there would be no benefits anyway.

    The client also supports pipe-lining of requests. Pipe-lining means another request is sent on the same connection before the response from the preceding one has returned. Pipe-lining is not appropriate for all requests.

    To enable pipe-lining, it must be enabled on the HttpClientOptions (default is false).

    When pipe-lining is enabled the connection will be automatically closed when all in-flight responses have returned and there are no outstanding pending requests to write.

    The client is designed to be reused between requests.

    NOTE: This class has been automatically generated from the original non RX-ified interface using Vert.x codegen.

    • Constructor Detail

      • HttpClient

        public HttpClient​(HttpClient delegate)
      • HttpClient

        public HttpClient​(Object delegate)
    • Method Detail

      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • isMetricsEnabled

        public boolean isMetricsEnabled()
        Whether the metrics are enabled for this measured object
        Specified by:
        isMetricsEnabled in interface Measured
        Returns:
        true if metrics are enabled
      • request

        public void request​(RequestOptions options,
                            Handler<AsyncResult<HttpClientRequest>> handler)
        Create an HTTP request to send to the server. The handler is called when the request is ready to be sent.
        Parameters:
        options - the request options
        handler - the handler called when the request is ready to be sent
      • request

        public void request​(RequestOptions options)
        Create an HTTP request to send to the server. The handler is called when the request is ready to be sent.
        Parameters:
        options - the request options
      • rxRequest

        public io.reactivex.Single<HttpClientRequest> rxRequest​(RequestOptions options)
        Create an HTTP request to send to the server. The handler is called when the request is ready to be sent.
        Parameters:
        options - the request options
        Returns:
      • request

        public void request​(HttpMethod method,
                            int port,
                            String host,
                            String requestURI,
                            Handler<AsyncResult<HttpClientRequest>> handler)
        Create an HTTP request to send to the server at the host and port. The handler is called when the request is ready to be sent.
        Parameters:
        method - the HTTP method
        port - the port
        host - the host
        requestURI - the relative URI
        handler - the handler called when the request is ready to be sent
      • request

        public void request​(HttpMethod method,
                            int port,
                            String host,
                            String requestURI)
        Create an HTTP request to send to the server at the host and port. The handler is called when the request is ready to be sent.
        Parameters:
        method - the HTTP method
        port - the port
        host - the host
        requestURI - the relative URI
      • rxRequest

        public io.reactivex.Single<HttpClientRequest> rxRequest​(HttpMethod method,
                                                                int port,
                                                                String host,
                                                                String requestURI)
        Create an HTTP request to send to the server at the host and port. The handler is called when the request is ready to be sent.
        Parameters:
        method - the HTTP method
        port - the port
        host - the host
        requestURI - the relative URI
        Returns:
      • request

        public void request​(HttpMethod method,
                            String host,
                            String requestURI,
                            Handler<AsyncResult<HttpClientRequest>> handler)
        Create an HTTP request to send to the server at the host and default port. The handler is called when the request is ready to be sent.
        Parameters:
        method - the HTTP method
        host - the host
        requestURI - the relative URI
        handler - the handler called when the request is ready to be sent
      • request

        public void request​(HttpMethod method,
                            String host,
                            String requestURI)
        Create an HTTP request to send to the server at the host and default port. The handler is called when the request is ready to be sent.
        Parameters:
        method - the HTTP method
        host - the host
        requestURI - the relative URI
      • rxRequest

        public io.reactivex.Single<HttpClientRequest> rxRequest​(HttpMethod method,
                                                                String host,
                                                                String requestURI)
        Create an HTTP request to send to the server at the host and default port. The handler is called when the request is ready to be sent.
        Parameters:
        method - the HTTP method
        host - the host
        requestURI - the relative URI
        Returns:
      • request

        public void request​(HttpMethod method,
                            String requestURI,
                            Handler<AsyncResult<HttpClientRequest>> handler)
        Create an HTTP request to send to the server at the default host and port. The handler is called when the request is ready to be sent.
        Parameters:
        method - the HTTP method
        requestURI - the relative URI
        handler - the handler called when the request is ready to be sent
      • request

        public void request​(HttpMethod method,
                            String requestURI)
        Create an HTTP request to send to the server at the default host and port. The handler is called when the request is ready to be sent.
        Parameters:
        method - the HTTP method
        requestURI - the relative URI
      • rxRequest

        public io.reactivex.Single<HttpClientRequest> rxRequest​(HttpMethod method,
                                                                String requestURI)
        Create an HTTP request to send to the server at the default host and port. The handler is called when the request is ready to be sent.
        Parameters:
        method - the HTTP method
        requestURI - the relative URI
        Returns:
      • webSocket

        public void webSocket​(int port,
                              String host,
                              String requestURI,
                              Handler<AsyncResult<WebSocket>> handler)
        Connect a WebSocket to the specified port, host and relative request URI
        Parameters:
        port - the port
        host - the host
        requestURI - the relative URI
        handler - handler that will be called with the WebSocket when connected
      • webSocket

        public void webSocket​(int port,
                              String host,
                              String requestURI)
        Connect a WebSocket to the specified port, host and relative request URI
        Parameters:
        port - the port
        host - the host
        requestURI - the relative URI
      • rxWebSocket

        public io.reactivex.Single<WebSocket> rxWebSocket​(int port,
                                                          String host,
                                                          String requestURI)
        Connect a WebSocket to the specified port, host and relative request URI
        Parameters:
        port - the port
        host - the host
        requestURI - the relative URI
        Returns:
      • webSocket

        public void webSocket​(String host,
                              String requestURI,
                              Handler<AsyncResult<WebSocket>> handler)
        Connect a WebSocket to the host and relative request URI and default port
        Parameters:
        host - the host
        requestURI - the relative URI
        handler - handler that will be called with the WebSocket when connected
      • webSocket

        public void webSocket​(String host,
                              String requestURI)
        Connect a WebSocket to the host and relative request URI and default port
        Parameters:
        host - the host
        requestURI - the relative URI
      • rxWebSocket

        public io.reactivex.Single<WebSocket> rxWebSocket​(String host,
                                                          String requestURI)
        Connect a WebSocket to the host and relative request URI and default port
        Parameters:
        host - the host
        requestURI - the relative URI
        Returns:
      • webSocket

        public void webSocket​(String requestURI,
                              Handler<AsyncResult<WebSocket>> handler)
        Connect a WebSocket at the relative request URI using the default host and port
        Parameters:
        requestURI - the relative URI
        handler - handler that will be called with the WebSocket when connected
      • webSocket

        public void webSocket​(String requestURI)
        Connect a WebSocket at the relative request URI using the default host and port
        Parameters:
        requestURI - the relative URI
      • rxWebSocket

        public io.reactivex.Single<WebSocket> rxWebSocket​(String requestURI)
        Connect a WebSocket at the relative request URI using the default host and port
        Parameters:
        requestURI - the relative URI
        Returns:
      • webSocket

        public void webSocket​(WebSocketConnectOptions options)
        Connect a WebSocket with the specified options.
        Parameters:
        options - the request options
      • rxWebSocket

        public io.reactivex.Single<WebSocket> rxWebSocket​(WebSocketConnectOptions options)
        Connect a WebSocket with the specified options.
        Parameters:
        options - the request options
        Returns:
      • webSocketAbs

        public void webSocketAbs​(String url,
                                 MultiMap headers,
                                 WebsocketVersion version,
                                 List<String> subProtocols,
                                 Handler<AsyncResult<WebSocket>> handler)
        Connect a WebSocket with the specified absolute url, with the specified headers, using the specified version of WebSockets, and the specified WebSocket sub protocols.
        Parameters:
        url - the absolute url
        headers - the headers
        version - the WebSocket version
        subProtocols - the subprotocols to use
        handler - handler that will be called if WebSocket connection fails
      • webSocketAbs

        public void webSocketAbs​(String url,
                                 MultiMap headers,
                                 WebsocketVersion version,
                                 List<String> subProtocols)
        Connect a WebSocket with the specified absolute url, with the specified headers, using the specified version of WebSockets, and the specified WebSocket sub protocols.
        Parameters:
        url - the absolute url
        headers - the headers
        version - the WebSocket version
        subProtocols - the subprotocols to use
      • rxWebSocketAbs

        public io.reactivex.Single<WebSocket> rxWebSocketAbs​(String url,
                                                             MultiMap headers,
                                                             WebsocketVersion version,
                                                             List<String> subProtocols)
        Connect a WebSocket with the specified absolute url, with the specified headers, using the specified version of WebSockets, and the specified WebSocket sub protocols.
        Parameters:
        url - the absolute url
        headers - the headers
        version - the WebSocket version
        subProtocols - the subprotocols to use
        Returns:
      • connectionHandler

        public HttpClient connectionHandler​(Handler<HttpConnection> handler)
        Set a connection handler for the client. This handler is called when a new connection is established.
        Parameters:
        handler -
        Returns:
        a reference to this, so the API can be used fluently
      • redirectHandler

        public HttpClient redirectHandler​(Function<HttpClientResponse,​Future<RequestOptions>> handler)
        Set a redirect handler for the http client.

        The redirect handler is called when a 3xx response is received and the request is configured to follow redirects with HttpClientRequest.setFollowRedirects(boolean).

        The redirect handler is passed the HttpClientResponse, it can return an HttpClientRequest or null.

        • when null is returned, the original response is processed by the original request response handler
        • when a new Future is returned, the client will send this new request
        The new request will get a copy of the previous request headers unless headers are set. In this case, the client assumes that the redirect handler exclusively managers the headers of the new request.

        The handler must return a Future unsent so the client can further configure it and send it.

        Parameters:
        handler - the new redirect handler
        Returns:
        a reference to this, so the API can be used fluently
      • redirectHandler

        public HttpClient redirectHandler​(io.reactivex.functions.Function<HttpClientResponse,​io.reactivex.Single<RequestOptions>> handler)
        Set a redirect handler for the http client.

        The redirect handler is called when a 3xx response is received and the request is configured to follow redirects with HttpClientRequest.setFollowRedirects(boolean).

        The redirect handler is passed the HttpClientResponse, it can return an HttpClientRequest or null.

        • when null is returned, the original response is processed by the original request response handler
        • when a new Future is returned, the client will send this new request
        The new request will get a copy of the previous request headers unless headers are set. In this case, the client assumes that the redirect handler exclusively managers the headers of the new request.

        The handler must return a Future unsent so the client can further configure it and send it.

        Parameters:
        handler - the new redirect handler
        Returns:
        a reference to this, so the API can be used fluently
      • close

        public void close​(Handler<AsyncResult<Void>> handler)
        Close the client. Closing will close down any pooled connections. Clients should always be closed after use.
        Parameters:
        handler -
      • close

        public void close()
        Close the client. Closing will close down any pooled connections. Clients should always be closed after use.
      • rxClose

        public io.reactivex.Completable rxClose()
        Close the client. Closing will close down any pooled connections. Clients should always be closed after use.
        Returns: