Class BaseRequest<R extends HttpRequest>

java.lang.Object
kong.unirest.core.BaseRequest<R>
All Implemented Interfaces:
HttpRequest<R>
Direct Known Subclasses:
HttpRequestBody, HttpRequestJsonPatch, HttpRequestMultiPart, HttpRequestNoBody, HttpRequestUniBody

abstract class BaseRequest<R extends HttpRequest> extends Object implements HttpRequest<R>
  • Field Details

  • Constructor Details

  • Method Details

    • routeParam

      public R routeParam(String name, String value)
      Description copied from interface: HttpRequest
      add a route param that replaces the matching {name} For example routeParam("name", "fred") will replace {name} in https://localhost/users/{name} to https://localhost/users/fred
      Specified by:
      routeParam in interface HttpRequest<R extends HttpRequest>
      Parameters:
      name - the name of the param (do not include curly braces {}
      value - the value to replace the placeholder with
      Returns:
      this request builder
    • routeParam

      public R routeParam(Map<String,Object> params)
      Description copied from interface: HttpRequest
      add a route param map that replaces the matching {name} For example routeParam(Map.of("name", "fred")) will replace {name} in https://localhost/users/{name} to https://localhost/users/fred
      Specified by:
      routeParam in interface HttpRequest<R extends HttpRequest>
      Parameters:
      params - a map of path params
      Returns:
      this request builder
    • basicAuth

      public R basicAuth(String username, String password)
      Description copied from interface: HttpRequest
      Basic auth credentials
      Specified by:
      basicAuth in interface HttpRequest<R extends HttpRequest>
      Parameters:
      username - the username
      password - the password
      Returns:
      this request builder
    • accept

      public R accept(String value)
      Description copied from interface: HttpRequest
      The Accept header to send (e.g. application/json)
      Specified by:
      accept in interface HttpRequest<R extends HttpRequest>
      Parameters:
      value - a valid mime type for the Accept header
      Returns:
      this request builder
    • header

      public R header(String name, String value)
      Description copied from interface: HttpRequest
      Add a http header, HTTP supports multiple of the same header. This will continue to append new values
      Specified by:
      header in interface HttpRequest<R extends HttpRequest>
      Parameters:
      name - name of the header
      value - value for the header
      Returns:
      this request builder
    • headerReplace

      public R headerReplace(String name, String value)
      Description copied from interface: HttpRequest
      Replace a header value or add it if it doesn't exist
      Specified by:
      headerReplace in interface HttpRequest<R extends HttpRequest>
      Parameters:
      name - name of the header
      value - value for the header
      Returns:
      this request builder
    • headers

      public R headers(Map<String,String> headerMap)
      Description copied from interface: HttpRequest
      Add headers as a map
      Specified by:
      headers in interface HttpRequest<R extends HttpRequest>
      Parameters:
      headerMap - a map of headers
      Returns:
      this request builder
    • headersReplace

      public R headersReplace(Map<String,String> headerMap)
      Description copied from interface: HttpRequest
      Replace headers as a map
      Specified by:
      headersReplace in interface HttpRequest<R extends HttpRequest>
      Parameters:
      headerMap - a map of headers
      Returns:
      this request builder
    • responseEncoding

      public R responseEncoding(String encoding)
      Description copied from interface: HttpRequest
      The encoding to expect the response to be for cases where the server fails to respond with the proper encoding
      Specified by:
      responseEncoding in interface HttpRequest<R extends HttpRequest>
      Parameters:
      encoding - a valid mime type for the Accept header
      Returns:
      this request builder
    • cookie

      public R cookie(String name, String value)
      Description copied from interface: HttpRequest
      Add a simple cookie header
      Specified by:
      cookie in interface HttpRequest<R extends HttpRequest>
      Parameters:
      name - the name of the cookie
      value - the value of the cookie
      Returns:
      this request builder
    • cookie

      public R cookie(Cookie cookie)
      Description copied from interface: HttpRequest
      Add a simple cookie header
      Specified by:
      cookie in interface HttpRequest<R extends HttpRequest>
      Parameters:
      cookie - a cookie
      Returns:
      this request builder
    • cookie

      public R cookie(Collection<Cookie> cookies)
      Description copied from interface: HttpRequest
      Add a collection of cookie headers
      Specified by:
      cookie in interface HttpRequest<R extends HttpRequest>
      Parameters:
      cookies - a cookie
      Returns:
      this request builder
    • queryString

      public R queryString(String name, Collection<?> value)
      Description copied from interface: HttpRequest
      Add multiple param with the same param name. queryString("name", Arrays.asList("bob", "linda")) will result in ?name=bob&name=linda
      Specified by:
      queryString in interface HttpRequest<R extends HttpRequest>
      Parameters:
      name - the name of the param
      value - a collection of values
      Returns:
      this request builder
    • queryString

      public R queryString(String name, Object value)
      Description copied from interface: HttpRequest
      add a query param to the url. The value will be URL-Encoded
      Specified by:
      queryString in interface HttpRequest<R extends HttpRequest>
      Parameters:
      name - the name of the param
      value - the value of the param
      Returns:
      this request builder
    • queryString

      public R queryString(Map<String,Object> parameters)
      Description copied from interface: HttpRequest
      Add query params as a map of name value pairs
      Specified by:
      queryString in interface HttpRequest<R extends HttpRequest>
      Parameters:
      parameters - a map of params
      Returns:
      this request builder
    • requestTimeout

      public R requestTimeout(int millies)
      Description copied from interface: HttpRequest
      Set a timeout for this request
      Specified by:
      requestTimeout in interface HttpRequest<R extends HttpRequest>
      Parameters:
      millies - the time in millies
      Returns:
      this request builder
    • withObjectMapper

      public R withObjectMapper(ObjectMapper mapper)
      Description copied from interface: HttpRequest
      Pass a ObjectMapper for the request. This will override any globally configured ObjectMapper
      Specified by:
      withObjectMapper in interface HttpRequest<R extends HttpRequest>
      Parameters:
      mapper - the ObjectMapper
      Returns:
      this request builder
    • downloadMonitor

      public R downloadMonitor(ProgressMonitor monitor)
      Description copied from interface: HttpRequest
      sets a download monitor for monitoring the response. this could be used for drawing a progress bar
      Specified by:
      downloadMonitor in interface HttpRequest<R extends HttpRequest>
      Parameters:
      monitor - a ProgressMonitor
      Returns:
      this request builder
    • getDownloadMonitor

      public ProgressMonitor getDownloadMonitor()
    • version

      public R version(HttpClient.Version value)
      Description copied from interface: HttpRequest
      sets the HTTP version for the request. This will override any global config
      Specified by:
      version in interface HttpRequest<R extends HttpRequest>
      Parameters:
      value - the version
      Returns:
      this request builder
    • asEmpty

      public HttpResponse<Empty> asEmpty()
      Description copied from interface: HttpRequest
      Executes the request and returns the response without parsing the body
      Specified by:
      asEmpty in interface HttpRequest<R extends HttpRequest>
      Returns:
      the basic HttpResponse
    • asEmptyAsync

      public CompletableFuture<HttpResponse<Empty>> asEmptyAsync()
      Description copied from interface: HttpRequest
      Executes the request asynchronously and returns the response without parsing the body
      Specified by:
      asEmptyAsync in interface HttpRequest<R extends HttpRequest>
      Returns:
      a CompletableFuture of a HttpResponse
    • asEmptyAsync

      public CompletableFuture<HttpResponse<Empty>> asEmptyAsync(Callback<Empty> callback)
      Description copied from interface: HttpRequest
      Executes the request asynchronously and returns a empty response which is passed to a callback
      Specified by:
      asEmptyAsync in interface HttpRequest<R extends HttpRequest>
      Parameters:
      callback - the callback* Executes the request asynchronously and returns the response without parsing the body
      Returns:
      a CompletableFuture of a HttpResponse
    • asString

      public HttpResponse<String> asString() throws UnirestException
      Description copied from interface: HttpRequest
      Executes the request and returns the response with the body mapped into a String
      Specified by:
      asString in interface HttpRequest<R extends HttpRequest>
      Returns:
      response
      Throws:
      UnirestException
    • asStringAsync

      public CompletableFuture<HttpResponse<String>> asStringAsync()
      Description copied from interface: HttpRequest
      Executes the request asynchronously and returns the response with the body mapped into a String
      Specified by:
      asStringAsync in interface HttpRequest<R extends HttpRequest>
      Returns:
      a CompletableFuture of a response
    • asStringAsync

      public CompletableFuture<HttpResponse<String>> asStringAsync(Callback<String> callback)
      Description copied from interface: HttpRequest
      Executes the request asynchronously and returns the response with the body mapped into a String
      Specified by:
      asStringAsync in interface HttpRequest<R extends HttpRequest>
      Parameters:
      callback - a callback handler
      Returns:
      a CompletableFuture of a response
    • asBytes

      public HttpResponse<byte[]> asBytes()
      Description copied from interface: HttpRequest
      Executes the request and returns the response with the body mapped into a byte[]
      Specified by:
      asBytes in interface HttpRequest<R extends HttpRequest>
      Returns:
      response
    • asBytesAsync

      public CompletableFuture<HttpResponse<byte[]>> asBytesAsync()
      Description copied from interface: HttpRequest
      Executes the request asynchronously and returns the response with the body mapped into a byte[]
      Specified by:
      asBytesAsync in interface HttpRequest<R extends HttpRequest>
      Returns:
      a CompletableFuture of a response
    • asBytesAsync

      public CompletableFuture<HttpResponse<byte[]>> asBytesAsync(Callback<byte[]> callback)
      Description copied from interface: HttpRequest
      Executes the request asynchronously and returns the response with the body mapped into a byte[]
      Specified by:
      asBytesAsync in interface HttpRequest<R extends HttpRequest>
      Parameters:
      callback - a callback handler
      Returns:
      a CompletableFuture of a response
    • asJson

      public HttpResponse<JsonNode> asJson() throws UnirestException
      Description copied from interface: HttpRequest
      Executes the request and returns the response with the body mapped into a JsonNode
      Specified by:
      asJson in interface HttpRequest<R extends HttpRequest>
      Returns:
      response
      Throws:
      UnirestException
    • asJsonAsync

      public CompletableFuture<HttpResponse<JsonNode>> asJsonAsync()
      Description copied from interface: HttpRequest
      Executes the request asynchronously and returns the response with the body mapped into a JsonNode
      Specified by:
      asJsonAsync in interface HttpRequest<R extends HttpRequest>
      Returns:
      a CompletableFuture of a response
    • asJsonAsync

      public CompletableFuture<HttpResponse<JsonNode>> asJsonAsync(Callback<JsonNode> callback)
      Description copied from interface: HttpRequest
      Executes the request asynchronously and returns the response with the body mapped into a JsonNode
      Specified by:
      asJsonAsync in interface HttpRequest<R extends HttpRequest>
      Parameters:
      callback - a callback handler
      Returns:
      a CompletableFuture of a response
    • asObject

      public <T> HttpResponse<T> asObject(Class<? extends T> responseClass) throws UnirestException
      Description copied from interface: HttpRequest
      Executes the request and returns the response with the body mapped into T by a configured ObjectMapper
      Specified by:
      asObject in interface HttpRequest<R extends HttpRequest>
      Type Parameters:
      T - the return type
      Parameters:
      responseClass - the class to return. This will be passed to the ObjectMapper
      Returns:
      a response
      Throws:
      UnirestException
    • asObject

      public <T> HttpResponse<T> asObject(GenericType<T> genericType) throws UnirestException
      Description copied from interface: HttpRequest
      Executes the request and returns the response with the body mapped into T by a configured ObjectMapper
      Specified by:
      asObject in interface HttpRequest<R extends HttpRequest>
      Type Parameters:
      T - the return type
      Parameters:
      genericType - the genertic type to return. This will be passed to the ObjectMapper
      Returns:
      a response
      Throws:
      UnirestException
    • asObject

      public <T> HttpResponse<T> asObject(Function<RawResponse,T> function)
      Description copied from interface: HttpRequest
      Execute the request and pass the raw response to a function for mapping. This raw response contains the original InputStream and is suitable for reading large responses.
      Specified by:
      asObject in interface HttpRequest<R extends HttpRequest>
      Type Parameters:
      T - The type of the response mapping
      Parameters:
      function - the function to map the response into a object of T
      Returns:
      A HttpResponse containing T as the body
    • asObjectAsync

      public <T> CompletableFuture<HttpResponse<T>> asObjectAsync(Function<RawResponse,T> function)
      Description copied from interface: HttpRequest
      Executes the request asynchronously, and pass the raw response to a function for mapping. This raw response contains the original InputStream and is suitable for reading large responses
      Specified by:
      asObjectAsync in interface HttpRequest<R extends HttpRequest>
      Type Parameters:
      T - the type of the response
      Parameters:
      function - a function to map the raw request into a object
      Returns:
      a CompletableFuture of a HttpResponse containing the body of T
    • asObjectAsync

      public <T> CompletableFuture<HttpResponse<T>> asObjectAsync(Class<? extends T> responseClass)
      Description copied from interface: HttpRequest
      Executes the request asynchronously and returns response with the body mapped into T by a configured ObjectMapper
      Specified by:
      asObjectAsync in interface HttpRequest<R extends HttpRequest>
      Type Parameters:
      T - the return type
      Parameters:
      responseClass - the class type to map to
      Returns:
      a CompletableFuture of a response
    • asObjectAsync

      public <T> CompletableFuture<HttpResponse<T>> asObjectAsync(Class<? extends T> responseClass, Callback<T> callback)
      Description copied from interface: HttpRequest
      Executes the request asynchronously, mapping to a type via the configured object mapper and then passed to a callback handler.
      Specified by:
      asObjectAsync in interface HttpRequest<R extends HttpRequest>
      Type Parameters:
      T - the return type
      Parameters:
      responseClass - the type for the ObjectMapper to map to
      callback - a callback for handling the body post mapping
      Returns:
      a CompletableFuture of a HttpResponse containing the body of T
    • asObjectAsync

      public <T> CompletableFuture<HttpResponse<T>> asObjectAsync(GenericType<T> genericType)
      Description copied from interface: HttpRequest
      Executes the request asynchronously, and use a GenericType with the ObjectMapper
      Specified by:
      asObjectAsync in interface HttpRequest<R extends HttpRequest>
      Type Parameters:
      T - the type of the response
      Parameters:
      genericType - the generic type containing the type
      Returns:
      a CompletableFuture of a HttpResponse containing the body of T
    • asObjectAsync

      public <T> CompletableFuture<HttpResponse<T>> asObjectAsync(GenericType<T> genericType, Callback<T> callback)
      Description copied from interface: HttpRequest
      Executes the request asynchronously, and use a GenericType with the ObjectMapper
      Specified by:
      asObjectAsync in interface HttpRequest<R extends HttpRequest>
      Type Parameters:
      T - the type of the response
      Parameters:
      genericType - the generic type containing the type
      callback - a callback for handling the body post mapping
      Returns:
      a CompletableFuture of a HttpResponse containing the body of T
    • funcResponse

      private <T> Function<RawResponse,HttpResponse<T>> funcResponse(Function<RawResponse,T> function)
    • thenConsume

      public void thenConsume(Consumer<RawResponse> consumer)
      Description copied from interface: HttpRequest
      Execute the request and pass the raw response to a consumer. This raw response contains the original InputStream and is suitable for reading large responses
      Specified by:
      thenConsume in interface HttpRequest<R extends HttpRequest>
      Parameters:
      consumer - a consumer function
    • thenConsumeAsync

      public void thenConsumeAsync(Consumer<RawResponse> consumer)
      Description copied from interface: HttpRequest
      Execute the request asynchronously and pass the raw response to a consumer. This raw response contains the original InputStream and is suitable for reading large responses
      Specified by:
      thenConsumeAsync in interface HttpRequest<R extends HttpRequest>
      Parameters:
      consumer - a consumer function
    • asFile

      public HttpResponse<File> asFile(String path, CopyOption... copyOptions)
      Description copied from interface: HttpRequest
      Executes the request and writes the contents into a file
      Specified by:
      asFile in interface HttpRequest<R extends HttpRequest>
      Parameters:
      path - The path to the file.
      copyOptions - options specifying how the copy should be done
      Returns:
      a HttpResponse with the file containing the results
    • asFileAsync

      public CompletableFuture<HttpResponse<File>> asFileAsync(String path, CopyOption... copyOptions)
      Description copied from interface: HttpRequest
      asynchronously executes the request and writes the contents into a file
      Specified by:
      asFileAsync in interface HttpRequest<R extends HttpRequest>
      Parameters:
      path - The path to the file.
      copyOptions - options specifying how the copy should be done
      Returns:
      a file containing the results
    • asFileAsync

      public CompletableFuture<HttpResponse<File>> asFileAsync(String path, Callback<File> callback, CopyOption... copyOptions)
      Description copied from interface: HttpRequest
      asynchronously executes the request and writes the contents into a file
      Specified by:
      asFileAsync in interface HttpRequest<R extends HttpRequest>
      Parameters:
      path - The path to the file.
      callback - a callback for handling the body post mapping
      copyOptions - options specifying how the copy should be done
      Returns:
      a file containing the results
    • asPaged

      public <T> PagedList<T> asPaged(Function<HttpRequest,HttpResponse> mappingFunction, Function<HttpResponse<T>,String> linkExtractor)
      Description copied from interface: HttpRequest
      Allows for following paging links common in many APIs. Each request will result in the same request (headers, etc) but will use the "next" link provided by the extract function.
      Specified by:
      asPaged in interface HttpRequest<R extends HttpRequest>
      Type Parameters:
      T - the type of response.
      Parameters:
      mappingFunction - a function to return the desired return type leveraging one of the as* methods (asString, asObject, etc).
      linkExtractor - a function to extract a "next" link to follow. Retuning a null or empty string ends the paging
      Returns:
      a PagedList of your type
    • request

      private <E> HttpResponse<E> request(Function<RawResponse,HttpResponse<E>> transformer, Class<?> resultType)
    • requestAsync

      private <T> CompletableFuture<HttpResponse<T>> requestAsync(HttpRequest request, Function<RawResponse,HttpResponse<T>> transformer, CompletableFuture<HttpResponse<T>> callback, Class<?> resultType)
    • getConsumer

      private Function<RawResponse,HttpResponse<Object>> getConsumer(Consumer<RawResponse> consumer)
    • getHttpMethod

      public HttpMethod getHttpMethod()
      Specified by:
      getHttpMethod in interface HttpRequest<R extends HttpRequest>
      Returns:
      The HTTP method of the request
    • getUrl

      public String getUrl()
      Specified by:
      getUrl in interface HttpRequest<R extends HttpRequest>
      Returns:
      The current URL string for the request
    • getHeaders

      public Headers getHeaders()
      Specified by:
      getHeaders in interface HttpRequest<R extends HttpRequest>
      Returns:
      the current headers for the request
    • getObjectMapper

      protected ObjectMapper getObjectMapper()
    • getRequestTimeout

      public Integer getRequestTimeout()
      Specified by:
      getRequestTimeout in interface HttpRequest<R extends HttpRequest>
      Returns:
      the connect timeout for this request
    • toSummary

      public HttpRequestSummary toSummary()
      Specified by:
      toSummary in interface HttpRequest<R extends HttpRequest>
      Returns:
      a summary for the response, used in metrics
    • getCreationTime

      public Instant getCreationTime()
      Specified by:
      getCreationTime in interface HttpRequest<R extends HttpRequest>
      Returns:
      the instant the request object was created in UTC (not when it was sent).
    • getVersion

      public HttpClient.Version getVersion()
      Description copied from interface: HttpRequest
      gets the version for the request, or null if not set.
      Specified by:
      getVersion in interface HttpRequest<R extends HttpRequest>
      Returns:
      the version
    • valueOr

      private <T> T valueOr(T x, Supplier<T> o)
    • getPath

      Path getPath()
    • equals

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

      public int hashCode()
      Overrides:
      hashCode in class Object