org.vertx.java.core.http

## Interface HttpClient

-     public interface HttpClient

  An HTTP client that maintains a pool of connections to a specific host, at a specific port. The client supports pipelining of requests.

  As well as HTTP requests, the client can act as a factory for `WebSocket websockets`.

  If an instance is instantiated from an event loop then the handlers of the instance will always be called on that same event loop. If an instance is instantiated from some other arbitrary Java thread then and event loop will be assigned to the instance and used when any of its handlers are called.

  Instances cannot be used from worker verticles

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Close the HTTP client.
    `HttpClientRequest` | `connect(java.lang.String uri, Handler<HttpClientResponse> responseHandler)` This method returns an `HttpClientRequest` instance which represents an HTTP CONNECT request with the specified `uri`.
    `void` | `connectWebsocket(java.lang.String uri, Handler<WebSocket> wsConnect)` Attempt to connect an HTML5 websocket to the specified URI
    `void` | `connectWebsocket(java.lang.String uri, WebSocketVersion wsVersion, Handler<WebSocket> wsConnect)` Attempt to connect an HTML5 websocket to the specified URI
    `HttpClientRequest` | `delete(java.lang.String uri, Handler<HttpClientResponse> responseHandler)` This method returns an `HttpClientRequest` instance which represents an HTTP DELETE request with the specified `uri`.
    `void` | `exceptionHandler(Handler<java.lang.Exception> handler)` Set an exception handler
    `HttpClientRequest` | `get(java.lang.String uri, Handler<HttpClientResponse> responseHandler)` This method returns an `HttpClientRequest` instance which represents an HTTP GET request with the specified `uri`.
    `java.lang.Integer` | `getBossThreads()`
    `java.lang.Long` | `getConnectTimeout()`
    `java.lang.String` | `getKeyStorePassword()`
    `java.lang.String` | `getKeyStorePath()`
    `int` | `getMaxPoolSize()` Returns the maximum number of connections in the pool
    `void` | `getNow(java.lang.String uri, Handler<HttpClientResponse> responseHandler)` This is a quick version of the `get(String, org.vertx.java.core.Handler)` method where you do not want to do anything with the request before sending.
    `void` | `getNow(java.lang.String uri, java.util.Map<java.lang.String,? extends java.lang.Object> headers, Handler<HttpClientResponse> responseHandler)` This method works in the same manner as `getNow(String, org.vertx.java.core.Handler)`, except that it allows you specify a set of `headers` that will be sent with the request.
    `java.lang.Integer` | `getReceiveBufferSize()`
    `java.lang.Integer` | `getSendBufferSize()`
    `java.lang.Integer` | `getTrafficClass()`
    `java.lang.String` | `getTrustStorePassword()`
    `java.lang.String` | `getTrustStorePath()`
    `HttpClientRequest` | `head(java.lang.String uri, Handler<HttpClientResponse> responseHandler)` This method returns an `HttpClientRequest` instance which represents an HTTP HEAD request with the specified `uri`.
    `java.lang.Boolean` | `isReuseAddress()`
    `java.lang.Boolean` | `isSoLinger()`
    `boolean` | `isSSL()`
    `java.lang.Boolean` | `isTCPKeepAlive()`
    `java.lang.Boolean` | `isTCPNoDelay()`
    `boolean` | `isTrustAll()`
    `boolean` | `isVerifyHost()`
    `HttpClientRequest` | `options(java.lang.String uri, Handler<HttpClientResponse> responseHandler)` This method returns an `HttpClientRequest` instance which represents an HTTP OPTIONS request with the specified `uri`.
    `HttpClientRequest` | `patch(java.lang.String uri, Handler<HttpClientResponse> responseHandler)` This method returns an `HttpClientRequest` instance which represents an HTTP PATCH request with the specified `uri`.
    `HttpClientRequest` | `post(java.lang.String uri, Handler<HttpClientResponse> responseHandler)` This method returns an `HttpClientRequest` instance which represents an HTTP POST request with the specified `uri`.
    `HttpClientRequest` | `put(java.lang.String uri, Handler<HttpClientResponse> responseHandler)` This method returns an `HttpClientRequest` instance which represents an HTTP PUT request with the specified `uri`.
    `HttpClientRequest` | `request(java.lang.String method, java.lang.String uri, Handler<HttpClientResponse> responseHandler)` This method returns an `HttpClientRequest` instance which represents an HTTP request with the specified `uri`.
    `HttpClient` | `setBossThreads(int threads)` Set the number of boss threads to use.
    `HttpClient` | `setConnectTimeout(long timeout)` Set the connect timeout in milliseconds.
    `HttpClient` | `setHost(java.lang.String host)` Set the host that the client will attempt to connect to the server on to `host`.
    `HttpClient` | `setKeepAlive(boolean keepAlive)` If `keepAlive` is `true` then, after the request has ended the connection will be returned to the pool where it can be used by another request.
    `HttpClient` | `setKeyStorePassword(java.lang.String pwd)` Set the password for the SSL key store.
    `HttpClient` | `setKeyStorePath(java.lang.String path)` Set the path to the SSL key store.
    `HttpClient` | `setMaxPoolSize(int maxConnections)` Set the maximum pool size
    `HttpClient` | `setPort(int port)` Set the port that the client will attempt to connect to the server on to `port`.
    `HttpClient` | `setReceiveBufferSize(int size)` Set the TCP receive buffer size for connections created by this instance to `size` in bytes.
    `HttpClient` | `setReuseAddress(boolean reuse)` Set the TCP reuseAddress setting for connections created by this instance to `reuse`.
    `HttpClient` | `setSendBufferSize(int size)` Set the TCP send buffer size for connections created by this instance to `size` in bytes.
    `HttpClient` | `setSoLinger(boolean linger)` Set the TCP soLinger setting for connections created by this instance to `linger`.
    `HttpClient` | `setSSL(boolean ssl)` If `ssl` is `true`, this signifies that any connections will be SSL connections.
    `HttpClient` | `setTCPKeepAlive(boolean keepAlive)` Set the TCP keepAlive setting for connections created by this instance to `keepAlive`.
    `HttpClient` | `setTCPNoDelay(boolean tcpNoDelay)` If `tcpNoDelay` is set to `true` then Nagle's algorithm will turned off for the TCP connections created by this instance.
    `HttpClient` | `setTrafficClass(int trafficClass)` Set the TCP trafficClass setting for connections created by this instance to `trafficClass`.
    `HttpClient` | `setTrustAll(boolean trustAll)` If you want an SSL client to trust *all* server certificates rather than match them against those in its trust store, you can set this to true.
    `HttpClient` | `setTrustStorePassword(java.lang.String pwd)` Set the password for the SSL trust store.
    `HttpClient` | `setTrustStorePath(java.lang.String path)` Set the path to the SSL trust store.
    `HttpClient` | `setVerifyHost(boolean verifyHost)` If `verifyHost` is `true`, then the client will try to validate the remote server's certificate hostname against the requested host.
    `HttpClientRequest` | `trace(java.lang.String uri, Handler<HttpClientResponse> responseHandler)` This method returns an `HttpClientRequest` instance which represents an HTTP TRACE request with the specified `uri`.

- - ### Method Detail

    - #### exceptionHandler

          void exceptionHandler(Handler<java.lang.Exception> handler)

      Set an exception handler

    - #### setMaxPoolSize

          HttpClient setMaxPoolSize(int maxConnections)

      Set the maximum pool size

      The client will maintain up to `maxConnections` HTTP connections in an internal pool

      Returns:
        A reference to this, so multiple invocations can be chained together.

    - #### getMaxPoolSize

          int getMaxPoolSize()

      Returns the maximum number of connections in the pool

    - #### setKeepAlive

          HttpClient setKeepAlive(boolean keepAlive)

      If `keepAlive` is `true` then, after the request has ended the connection will be returned to the pool where it can be used by another request. In this manner, many HTTP requests can be pipe-lined over an HTTP connection. Keep alive connections will not be closed until the `close()` method is invoked.

      If `keepAlive` is `false` then a new connection will be created for each request and it won't ever go in the pool, the connection will closed after the response has been received. Even with no keep alive, the client will not allow more than `getMaxPoolSize()` connections to be created at any one time.

      Returns:
        A reference to this, so multiple invocations can be chained together.

    - #### setPort

          HttpClient setPort(int port)

      Set the port that the client will attempt to connect to the server on to `port`. The default value is `80`
      Returns:
        A reference to this, so multiple invocations can be chained together.

    - #### setHost

          HttpClient setHost(java.lang.String host)

      Set the host that the client will attempt to connect to the server on to `host`. The default value is `localhost`
      Returns:
        A reference to this, so multiple invocations can be chained together.

    - #### connectWebsocket

          void connectWebsocket(java.lang.String uri,
                              Handler<WebSocket> wsConnect)

      Attempt to connect an HTML5 websocket to the specified URI

      The connect is done asynchronously and `wsConnect` is called back with the websocket

    - #### connectWebsocket

          void connectWebsocket(java.lang.String uri,
                              WebSocketVersion wsVersion,
                              Handler<WebSocket> wsConnect)

      Attempt to connect an HTML5 websocket to the specified URI

      This version of the method allows you to specify the websockets version using the `wsVersion parameter` The connect is done asynchronously and `wsConnect` is called back with the websocket

    - #### getNow

          void getNow(java.lang.String uri,
                    Handler<HttpClientResponse> responseHandler)

      This is a quick version of the `get(String, org.vertx.java.core.Handler)` method where you do not want to do anything with the request before sending.

      Normally with any of the HTTP methods you create the request then when you are ready to send it you call `HttpClientRequest.end()` on it. With this method the request is immediately sent.

      When an HTTP response is received from the server the `responseHandler` is called passing in the response.

    - #### getNow

          void getNow(java.lang.String uri,
                    java.util.Map<java.lang.String,? extends java.lang.Object> headers,
                    Handler<HttpClientResponse> responseHandler)

      This method works in the same manner as `getNow(String, org.vertx.java.core.Handler)`, except that it allows you specify a set of `headers` that will be sent with the request.

    - #### options

          HttpClientRequest options(java.lang.String uri,
                                  Handler<HttpClientResponse> responseHandler)

      This method returns an `HttpClientRequest` instance which represents an HTTP OPTIONS request with the specified `uri`.

      When an HTTP response is received from the server the `responseHandler` is called passing in the response.

    - #### get

          HttpClientRequest get(java.lang.String uri,
                              Handler<HttpClientResponse> responseHandler)

      This method returns an `HttpClientRequest` instance which represents an HTTP GET request with the specified `uri`.

      When an HTTP response is received from the server the `responseHandler` is called passing in the response.

    - #### head

          HttpClientRequest head(java.lang.String uri,
                               Handler<HttpClientResponse> responseHandler)

      This method returns an `HttpClientRequest` instance which represents an HTTP HEAD request with the specified `uri`.

      When an HTTP response is received from the server the `responseHandler` is called passing in the response.

    - #### post

          HttpClientRequest post(java.lang.String uri,
                               Handler<HttpClientResponse> responseHandler)

      This method returns an `HttpClientRequest` instance which represents an HTTP POST request with the specified `uri`.

      When an HTTP response is received from the server the `responseHandler` is called passing in the response.

    - #### put

          HttpClientRequest put(java.lang.String uri,
                              Handler<HttpClientResponse> responseHandler)

      This method returns an `HttpClientRequest` instance which represents an HTTP PUT request with the specified `uri`.

      When an HTTP response is received from the server the `responseHandler` is called passing in the response.

    - #### delete

          HttpClientRequest delete(java.lang.String uri,
                                 Handler<HttpClientResponse> responseHandler)

      This method returns an `HttpClientRequest` instance which represents an HTTP DELETE request with the specified `uri`.

      When an HTTP response is received from the server the `responseHandler` is called passing in the response.

    - #### trace

          HttpClientRequest trace(java.lang.String uri,
                                Handler<HttpClientResponse> responseHandler)

      This method returns an `HttpClientRequest` instance which represents an HTTP TRACE request with the specified `uri`.

      When an HTTP response is received from the server the `responseHandler` is called passing in the response.

    - #### connect

          HttpClientRequest connect(java.lang.String uri,
                                  Handler<HttpClientResponse> responseHandler)

      This method returns an `HttpClientRequest` instance which represents an HTTP CONNECT request with the specified `uri`.

      When an HTTP response is received from the server the `responseHandler` is called passing in the response.

    - #### patch

          HttpClientRequest patch(java.lang.String uri,
                                Handler<HttpClientResponse> responseHandler)

      This method returns an `HttpClientRequest` instance which represents an HTTP PATCH request with the specified `uri`.

      When an HTTP response is received from the server the `responseHandler` is called passing in the response.

    - #### request

          HttpClientRequest request(java.lang.String method,
                                  java.lang.String uri,
                                  Handler<HttpClientResponse> responseHandler)

      This method returns an `HttpClientRequest` instance which represents an HTTP request with the specified `uri`. The specific HTTP method (e.g. GET, POST, PUT etc) is specified using the parameter `method`

      When an HTTP response is received from the server the `responseHandler` is called passing in the response.

    - #### close

          void close()

      Close the HTTP client. This will cause any pooled HTTP connections to be closed.

    - #### setSSL

          HttpClient setSSL(boolean ssl)

      If `ssl` is `true`, this signifies that any connections will be SSL connections.
      Returns:
        A reference to this, so multiple invocations can be chained together.

    - #### setVerifyHost

          HttpClient setVerifyHost(boolean verifyHost)

      If `verifyHost` is `true`, then the client will try to validate the remote server's certificate hostname against the requested host. Should default to 'true'. This method should only be used in SSL mode, i.e. after `setSSL(boolean)` has been set to `true`.
      Returns:
        A reference to this, so multiple invocations can be chained together.

    - #### setKeyStorePath

          HttpClient setKeyStorePath(java.lang.String path)

      Set the path to the SSL key store. This method should only be used in SSL mode, i.e. after `setSSL(boolean)` has been set to `true`.

      The SSL key store is a standard Java Key Store, and will contain the client certificate. Client certificates are only required if the server requests client authentication.

      Returns:
        A reference to this, so multiple invocations can be chained together.

    - #### setKeyStorePassword

          HttpClient setKeyStorePassword(java.lang.String pwd)

      Set the password for the SSL key store. This method should only be used in SSL mode, i.e. after `setSSL(boolean)` has been set to `true`.

      Returns:
        A reference to this, so multiple invocations can be chained together.

    - #### setTrustStorePath

          HttpClient setTrustStorePath(java.lang.String path)

      Set the path to the SSL trust store. This method should only be used in SSL mode, i.e. after `setSSL(boolean)` has been set to `true`.

      The trust store is a standard Java Key Store, and should contain the certificates of any servers that the client trusts. If you wish the client to trust all server certificates you can use the `setTrustAll(boolean)` method.

      Returns:
        A reference to this, so multiple invocations can be chained together.

    - #### setTrustStorePassword

          HttpClient setTrustStorePassword(java.lang.String pwd)

      Set the password for the SSL trust store. This method should only be used in SSL mode, i.e. after `setSSL(boolean)` has been set to `true`.

      Returns:
        A reference to this, so multiple invocations can be chained together.

    - #### setTrustAll

          HttpClient setTrustAll(boolean trustAll)

      If you want an SSL client to trust *all* server certificates rather than match them against those in its trust store, you can set this to true.

      Use this with caution as you may be exposed to "main in the middle" attacks

      Parameters:
        `trustAll` - Set to true if you want to trust all server certificates

    - #### setTCPNoDelay

          HttpClient setTCPNoDelay(boolean tcpNoDelay)

      If `tcpNoDelay` is set to `true` then Nagle's algorithm will turned off for the TCP connections created by this instance.
      Returns:
        a reference to this so multiple method calls can be chained together

    - #### setSendBufferSize

          HttpClient setSendBufferSize(int size)

      Set the TCP send buffer size for connections created by this instance to `size` in bytes.
      Returns:
        a reference to this so multiple method calls can be chained together

    - #### setReceiveBufferSize

          HttpClient setReceiveBufferSize(int size)

      Set the TCP receive buffer size for connections created by this instance to `size` in bytes.
      Returns:
        a reference to this so multiple method calls can be chained together

    - #### setTCPKeepAlive

          HttpClient setTCPKeepAlive(boolean keepAlive)

      Set the TCP keepAlive setting for connections created by this instance to `keepAlive`.
      Returns:
        a reference to this so multiple method calls can be chained together

    - #### setReuseAddress

          HttpClient setReuseAddress(boolean reuse)

      Set the TCP reuseAddress setting for connections created by this instance to `reuse`.
      Returns:
        a reference to this so multiple method calls can be chained together

    - #### setSoLinger

          HttpClient setSoLinger(boolean linger)

      Set the TCP soLinger setting for connections created by this instance to `linger`.
      Returns:
        a reference to this so multiple method calls can be chained together

    - #### setTrafficClass

          HttpClient setTrafficClass(int trafficClass)

      Set the TCP trafficClass setting for connections created by this instance to `trafficClass`.
      Returns:
        a reference to this so multiple method calls can be chained together

    - #### setConnectTimeout

          HttpClient setConnectTimeout(long timeout)

      Set the connect timeout in milliseconds.
      Returns:
        a reference to this so multiple method calls can be chained together

    - #### setBossThreads

          HttpClient setBossThreads(int threads)

      Set the number of boss threads to use. Boss threads are used to make connections.
      Returns:
        a reference to this so multiple method calls can be chained together

    - #### isTCPNoDelay

          java.lang.Boolean isTCPNoDelay()

      Returns:
        true if Nagle's algorithm is disabled.

    - #### getSendBufferSize

          java.lang.Integer getSendBufferSize()

      Returns:
        The TCP send buffer size

    - #### getReceiveBufferSize

          java.lang.Integer getReceiveBufferSize()

      Returns:
        The TCP receive buffer size

    - #### isTCPKeepAlive

          java.lang.Boolean isTCPKeepAlive()

      Returns:
        true if TCP keep alive is enabled

    - #### isReuseAddress

          java.lang.Boolean isReuseAddress()

      Returns:
        The value of TCP reuse address

    - #### isSoLinger

          java.lang.Boolean isSoLinger()

      Returns:
        the value of TCP so linger

    - #### getTrafficClass

          java.lang.Integer getTrafficClass()

      Returns:
        the value of TCP traffic class

    - #### getConnectTimeout

          java.lang.Long getConnectTimeout()

      Returns:
        The connect timeout in milliseconds

    - #### getBossThreads

          java.lang.Integer getBossThreads()

      Returns:
        The number of boss threads

    - #### isSSL

          boolean isSSL()

      Returns:
        true if this client will make SSL connections

    - #### isVerifyHost

          boolean isVerifyHost()

      Returns:
        true if this client will validate the remote server's certificate hostname against the requested host

    - #### isTrustAll

          boolean isTrustAll()

      Returns:
        true if this client will trust all server certificates.

    - #### getKeyStorePath

          java.lang.String getKeyStorePath()

      Returns:
        The path to the key store

    - #### getKeyStorePassword

          java.lang.String getKeyStorePassword()

      Returns:
        The keystore password

    - #### getTrustStorePath

          java.lang.String getTrustStorePath()

      Returns:
        The trust store path

    - #### getTrustStorePassword

          java.lang.String getTrustStorePassword()

      Returns:
        The trust store password