Class HttpRequest<T>

java.lang.Object
io.vertx.reactivex.ext.web.client.HttpRequest<T>
All Implemented Interfaces:
io.vertx.lang.rx.RxDelegate

public class HttpRequest<T> extends Object implements io.vertx.lang.rx.RxDelegate
A client-side HTTP request.

Instances are created by an WebClient instance, via one of the methods corresponding to the specific HTTP methods such as WebClient.get(String), etc...

The request shall be configured prior sending, the request is immutable and when a mutator method is called, a new request is returned allowing to expose the request in a public API and apply further customization.

After the request has been configured, the methods

can be called. The sendXXX methods perform the actual request, they can be called multiple times to perform the same HTTP request at different points in time.

The handler is called back with

  • an HttpResponse instance when the HTTP response has been received
  • a failure when the HTTP request failed (like a connection error) or when the HTTP response could not be obtained (like connection or unmarshalling errors)

Most of the time, this client will buffer the HTTP response fully unless a specific is used such as .

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

  • Field Details

    • __TYPE_ARG

      public static final io.vertx.lang.rx.TypeArg<HttpRequest> __TYPE_ARG
    • __typeArg_0

      public final io.vertx.lang.rx.TypeArg<T> __typeArg_0
  • Constructor Details

    • HttpRequest

      public HttpRequest(HttpRequest delegate)
    • HttpRequest

      public HttpRequest(Object delegate, io.vertx.lang.rx.TypeArg<T> typeArg_0)
  • Method Details

    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

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

      public HttpRequest getDelegate()
      Specified by:
      getDelegate in interface io.vertx.lang.rx.RxDelegate
    • method

      public HttpRequest<T> method(HttpMethod value)
      Configure the request to use a new method value.
      Parameters:
      value -
      Returns:
      a reference to this, so the API can be used fluently
    • method

      public HttpMethod method()
      Returns:
      the request method
    • port

      public HttpRequest<T> port(int value)
      Configure the request to use a new port value.

      This overrides the port set by absolute URI requests

      Parameters:
      value -
      Returns:
      a reference to this, so the API can be used fluently
    • port

      public int port()
      Returns:
      the request port or 0 when none is set for absolute URI templates
    • as

      public <U> HttpRequest<U> as(BodyCodec<U> responseCodec)
      Configure the request to decode the response with the responseCodec.
      Parameters:
      responseCodec - the response codec
      Returns:
      a reference to this, so the API can be used fluently
    • bodyCodec

      public BodyCodec<T> bodyCodec()
      Returns:
      the request body codec
    • host

      public HttpRequest<T> host(String value)
      Configure the request to use a new host value.

      This overrides the host set by absolute URI requests

      Parameters:
      value -
      Returns:
      a reference to this, so the API can be used fluently
    • host

      public String host()
      Returns:
      the request host or null when none is set for absolute URI templates
    • virtualHost

      public HttpRequest<T> virtualHost(String value)
      Configure the request to use a virtual host value.

      Usually the header host (:authority pseudo header for HTTP/2) is set from the request host value since this host value resolves to the server IP address.

      Sometimes you need to set a host header for an address that does not resolve to the server IP address. The virtual host value overrides the value of the actual host header (:authority pseudo header for HTTP/2).

      The virtual host is also be used for SNI.

      Parameters:
      value -
      Returns:
      a reference to this, so the API can be used fluently
    • virtualHost

      public String virtualHost()
      Returns:
      the request virtual host if any or null
    • uri

      public HttpRequest<T> uri(String value)
      Configure the request to use a new request URI value.

      This overrides the port set by absolute URI requests

      When the uri has query parameters, they are set in the queryParams(), overwriting any parameters previously set

      Parameters:
      value -
      Returns:
      a reference to this, so the API can be used fluently
    • uri

      public String uri()
      Returns:
      the request uri or null when none is set for absolute URI templates, when the request uri is a template, the template is extrapolated tolerating missing variables.
    • putHeaders

      public HttpRequest<T> putHeaders(MultiMap headers)
      Configure the request to add multiple HTTP headers .
      Parameters:
      headers - The HTTP headers
      Returns:
      a reference to this, so the API can be used fluently
    • putHeader

      public HttpRequest<T> putHeader(String name, String value)
      Configure the request to set a new HTTP header.
      Parameters:
      name - the header name
      value - the header value
      Returns:
      a reference to this, so the API can be used fluently
    • headers

      public MultiMap headers()
      Returns:
      The HTTP headers
    • basicAuthentication

      public HttpRequest<T> basicAuthentication(String id, String password)
      Configure the request to perform basic access authentication.

      In basic HTTP authentication, a request contains a header field of the form 'Authorization: Basic <credentials>', where credentials is the base64 encoding of id and password joined by a colon.

      In practical terms the arguments are converted to a object.
      Parameters:
      id - the id
      password - the password
      Returns:
      a reference to this, so the API can be used fluently
    • basicAuthentication

      public HttpRequest<T> basicAuthentication(Buffer id, Buffer password)
      Configure the request to perform basic access authentication.

      In basic HTTP authentication, a request contains a header field of the form 'Authorization: Basic <credentials>', where credentials is the base64 encoding of id and password joined by a colon.

      In practical terms the arguments are converted to a object.
      Parameters:
      id - the id
      password - the password
      Returns:
      a reference to this, so the API can be used fluently
    • bearerTokenAuthentication

      public HttpRequest<T> bearerTokenAuthentication(String bearerToken)
      Configure the request to perform bearer token authentication.

      In OAuth 2.0, a request contains a header field of the form 'Authorization: Bearer <bearerToken>', where bearerToken is the bearer token issued by an authorization server to access protected resources.

      In practical terms the arguments are converted to a object.
      Parameters:
      bearerToken - the bearer token
      Returns:
      a reference to this, so the API can be used fluently
    • ssl

      public HttpRequest<T> ssl(Boolean value)
      Configure the request whether to use SSL.

      This overrides the SSL value set by absolute URI requests

      Parameters:
      value -
      Returns:
      a reference to this, so the API can be used fluently
    • ssl

      public Boolean ssl()
      Returns:
      whether the request uses SSL or null when none is set for absolute URI templates
    • timeout

      public HttpRequest<T> timeout(long value)
      Configures the amount of time in milliseconds after which if the request does not return any data within the timeout period an TimeoutException fails the request.

      Setting zero or a negative value disables the timeout.

      Parameters:
      value - The quantity of time in milliseconds.
      Returns:
      a reference to this, so the API can be used fluently
    • timeout

      public long timeout()
      Returns:
      the current timeout in milliseconds
    • idleTimeout

      public HttpRequest<T> idleTimeout(long timeout)
      Sets the amount of time after which, if the request does not return any data within the timeout period, the request/response is closed and the related futures are failed with a TimeoutException.

      The timeout starts after a connection is obtained from the client.

      Parameters:
      timeout - the amount of time in milliseconds.
      Returns:
      a reference to this, so the API can be used fluently
    • idleTimeout

      public long idleTimeout()
      Returns:
      the idle timeout
    • connectTimeout

      public HttpRequest<T> connectTimeout(long timeout)
      Sets the amount of time after which, if the request is not obtained from the client within the timeout period, the response is failed with a TimeoutException. Note this is not related to the TCP option, when a request is made against a pooled HTTP client, the timeout applies to the duration to obtain a connection from the pool to serve the request, the timeout might fire because the server does not respond in time or the pool is too busy to serve a request.
      Parameters:
      timeout - the amount of time in milliseconds.
      Returns:
      a reference to this, so the API can be used fluently
    • connectTimeout

      public long connectTimeout()
      Returns:
      the connect timeout
    • addQueryParam

      public HttpRequest<T> addQueryParam(String paramName, String paramValue)
      Add a query parameter to the request.
      Parameters:
      paramName - the param name
      paramValue - the param value
      Returns:
      a reference to this, so the API can be used fluently
    • setQueryParam

      public HttpRequest<T> setQueryParam(String paramName, String paramValue)
      Set a query parameter to the request.
      Parameters:
      paramName - the param name
      paramValue - the param value
      Returns:
      a reference to this, so the API can be used fluently
    • setTemplateParam

      public HttpRequest<T> setTemplateParam(String paramName, String paramValue)
      Set a request URI template string parameter to the request, expanded when the request URI is a .
      Parameters:
      paramName - the param name
      paramValue - the param value
      Returns:
      a reference to this, so the API can be used fluently
    • setTemplateParam

      public HttpRequest<T> setTemplateParam(String paramName, List<String> paramValue)
      Set a request URI template list parameter to the request, expanded when the request URI is a .
      Parameters:
      paramName - the param name
      paramValue - the param value
      Returns:
      a reference to this, so the API can be used fluently
    • setTemplateParam

      public HttpRequest<T> setTemplateParam(String paramName, Map<String,String> paramValue)
      Set a request URI template map parameter to the request, expanded when the request URI is a .
      Parameters:
      paramName - the param name
      paramValue - the param value
      Returns:
      a reference to this, so the API can be used fluently
    • followRedirects

      public HttpRequest<T> followRedirects(boolean value)
      Set whether to follow request redirections
      Parameters:
      value - true if redirections should be followed
      Returns:
      a reference to this, so the API can be used fluently
    • followRedirects

      public boolean followRedirects()
      Returns:
      whether to follow request redirections
    • routingKey

      public HttpRequest<T> routingKey(String key)
      Set the routing key, the routing key can be used by a Vert.x client side sticky load balancer to pin the request to a remote HTTP server.
      Parameters:
      key - the routing key
      Returns:
      a reference to this, so the API can be used fluently
    • routingKey

      public String routingKey()
      Return the routing key, the routing key can be used by a Vert.x client side sticky load balancer to pin the request to a remote HTTP server.
      Returns:
      the routing key
    • proxy

      public HttpRequest<T> proxy(ProxyOptions proxyOptions)
      Configure the request to set a proxy for this request. Setting proxy here supersedes the proxy set on the client itself
      Parameters:
      proxyOptions - The proxy options
      Returns:
      a reference to this, so the API can be used fluently
    • proxy

      public ProxyOptions proxy()
      Returns:
      the proxy for this request
    • queryParams

      public MultiMap queryParams()
      Return the current query parameters.
      Returns:
      the current query parameters
    • templateParams

      public Variables templateParams()
      Return the current request URI template parameters.
      Returns:
      the current request URI template parameters
    • copy

      public HttpRequest<T> copy()
      Copy this request
      Returns:
      a copy of this request
    • multipartMixed

      public HttpRequest<T> multipartMixed(boolean allow)
      Allow or disallow multipart mixed encoding when sending having files sharing the same file name.
      The default value is true.
      Set to false if you want to achieve the behavior for HTML5.
      Parameters:
      allow - true allows use of multipart mixed encoding
      Returns:
      a reference to this, so the API can be used fluently
    • multipartMixed

      public boolean multipartMixed()
      Returns:
      whether multipart mixed encoding is allowed
    • traceOperation

      public HttpRequest<T> traceOperation(String traceOperation)
      Trace operation name override.
      Parameters:
      traceOperation - Name of operation to use in traces
      Returns:
      a reference to this, so the API can be used fluently
    • traceOperation

      public String traceOperation()
      Returns:
      the trace operation name override
    • sendStream

      public Future<HttpResponse<T>> sendStream(ReadStream<Buffer> body)
      Like send() but with an HTTP request body stream.
      Parameters:
      body - the body
      Returns:
    • rxSendStream

      public Single<HttpResponse<T>> rxSendStream(ReadStream<Buffer> body)
      Like send() but with an HTTP request body stream.
      Parameters:
      body - the body
      Returns:
    • sendStream

      public Future<HttpResponse<T>> sendStream(Flowable<Buffer> body)
      Like send() but with an HTTP request body stream.
      Parameters:
      body - the body
      Returns:
    • rxSendStream

      public Single<HttpResponse<T>> rxSendStream(Flowable<Buffer> body)
      Like send() but with an HTTP request body stream.
      Parameters:
      body - the body
      Returns:
    • sendBuffer

      public Future<HttpResponse<T>> sendBuffer(Buffer body)
      Like send() but with an HTTP request body buffer.
      Parameters:
      body - the body
      Returns:
    • rxSendBuffer

      public Single<HttpResponse<T>> rxSendBuffer(Buffer body)
      Like send() but with an HTTP request body buffer.
      Parameters:
      body - the body
      Returns:
    • sendJsonObject

      public Future<HttpResponse<T>> sendJsonObject(JsonObject body)
      Like send() but with an HTTP request body object encoded as json and the content type set to application/json.
      Parameters:
      body - the body
      Returns:
    • rxSendJsonObject

      public Single<HttpResponse<T>> rxSendJsonObject(JsonObject body)
      Like send() but with an HTTP request body object encoded as json and the content type set to application/json.
      Parameters:
      body - the body
      Returns:
    • sendJson

      public Future<HttpResponse<T>> sendJson(Object body)
      Like send() but with an HTTP request body object encoded as json and the content type set to application/json.
      Parameters:
      body - the body
      Returns:
    • rxSendJson

      public Single<HttpResponse<T>> rxSendJson(Object body)
      Like send() but with an HTTP request body object encoded as json and the content type set to application/json.
      Parameters:
      body - the body
      Returns:
    • sendForm

      public Future<HttpResponse<T>> sendForm(MultiMap body)
      Like send() but with an HTTP request body multimap encoded as form and the content type set to application/x-www-form-urlencoded.

      When the content type header is previously set to multipart/form-data it will be used instead.

      Parameters:
      body - the body
      Returns:
    • rxSendForm

      public Single<HttpResponse<T>> rxSendForm(MultiMap body)
      Like send() but with an HTTP request body multimap encoded as form and the content type set to application/x-www-form-urlencoded.

      When the content type header is previously set to multipart/form-data it will be used instead.

      Parameters:
      body - the body
      Returns:
    • sendForm

      public Future<HttpResponse<T>> sendForm(MultiMap body, String charset)
      Like send() but with an HTTP request body multimap encoded as form and the content type set to application/x-www-form-urlencoded.

      When the content type header is previously set to multipart/form-data it will be used instead. NOTE: the use of this method is strongly discouraged to use when the form is a application/x-www-form-urlencoded encoded form since the charset to use must be UTF-8.

      Parameters:
      body - the body
      charset - the charset
      Returns:
    • rxSendForm

      public Single<HttpResponse<T>> rxSendForm(MultiMap body, String charset)
      Like send() but with an HTTP request body multimap encoded as form and the content type set to application/x-www-form-urlencoded.

      When the content type header is previously set to multipart/form-data it will be used instead. NOTE: the use of this method is strongly discouraged to use when the form is a application/x-www-form-urlencoded encoded form since the charset to use must be UTF-8.

      Parameters:
      body - the body
      charset - the charset
      Returns:
    • sendMultipartForm

      public Future<HttpResponse<T>> sendMultipartForm(MultipartForm body)
      Like send() but with an HTTP request body multimap encoded as form and the content type set to multipart/form-data. You may use this method to send attributes and upload files.
      Parameters:
      body - the body
      Returns:
    • rxSendMultipartForm

      public Single<HttpResponse<T>> rxSendMultipartForm(MultipartForm body)
      Like send() but with an HTTP request body multimap encoded as form and the content type set to multipart/form-data. You may use this method to send attributes and upload files.
      Parameters:
      body - the body
      Returns:
    • send

      public Future<HttpResponse<T>> send()
      Send a request, the handler will receive the response as an HttpResponse.
      Returns:
    • rxSend

      public Single<HttpResponse<T>> rxSend()
      Send a request, the handler will receive the response as an HttpResponse.
      Returns:
    • putHeader

      public HttpRequest<T> putHeader(CharSequence name, CharSequence value)
      Configure the request to set a new HTTP header using CharSequence.

      This is an overload of putHeader(String, String) that accepts CharSequence parameters.

      Parameters:
      name - the header name
      value - the header value
      Returns:
      a reference to this, so the API can be used fluently
    • putHeader

      public HttpRequest<T> putHeader(String name, Iterable<String> value)
      Configure the request to set a new HTTP header with multiple values.
      Parameters:
      name - the header name
      value - the header value
      Returns:
      a reference to this, so the API can be used fluently
    • putHeader

      public HttpRequest<T> putHeader(CharSequence name, Iterable<CharSequence> values)
      Configure the request to set a new HTTP header with multiple values using CharSequence.

      This is an overload of putHeader(String, String) that accepts CharSequence parameters.

      Parameters:
      name - the header name
      values - the header values
      Returns:
      a reference to this, so the API can be used fluently
    • authentication

      public HttpRequest<T> authentication(Credentials credentials)
      Configure the request to perform HTTP Authentication.

      Performs a generic authentication using the credentials provided by the user. For the sake of validation safety it is recommended that is called to ensure that the credentials are applicable to the HTTP Challenged received on a previous request that returned a 401 response code.

      Parameters:
      credentials - the credentials to use.
      Returns:
      a reference to this, so the API can be used fluently
    • newInstance

      public static <T> HttpRequest<T> newInstance(HttpRequest arg)
    • newInstance

      public static <T> HttpRequest<T> newInstance(HttpRequest arg, io.vertx.lang.rx.TypeArg<T> __typeArg_T)