Class WebClient

java.lang.Object
org.apache.cxf.jaxrs.client.AbstractClient
org.apache.cxf.jaxrs.client.WebClient
All Implemented Interfaces:
Client

public class WebClient extends AbstractClient
Http-centric web client
  • Constructor Details

    • WebClient

      protected WebClient(String baseAddress)
    • WebClient

      protected WebClient(String baseAddress, Map<String,Object> properties)
    • WebClient

      protected WebClient(URI baseURI)
    • WebClient

      protected WebClient(URI baseURI, Map<String,Object> properties)
    • WebClient

      protected WebClient(ClientState state)
  • Method Details

    • create

      public static WebClient create(String baseAddress)
      Creates WebClient
      Parameters:
      baseAddress - baseAddress
    • create

      public static WebClient create(String baseAddress, Map<String,Object> properties)
      Creates WebClient
      Parameters:
      baseAddress - baseAddress
    • create

      public static WebClient create(URI baseURI)
      Creates WebClient
      Parameters:
      baseURI - baseURI
    • create

      public static WebClient create(String baseURI, boolean threadSafe)
      Creates WebClient
      Parameters:
      baseURI - baseURI
    • create

      public static WebClient create(String baseAddress, List<?> providers)
      Creates WebClient
      Parameters:
      baseAddress - baseURI
      providers - list of providers
    • create

      public static WebClient create(String baseAddress, List<?> providers, boolean threadSafe)
      Creates WebClient
      Parameters:
      baseAddress - baseURI
      providers - list of providers
      threadSafe - if true ThreadLocalClientState is used
    • create

      public static WebClient create(String baseAddress, List<?> providers, Map<String,Object> properties, boolean threadSafe)
      Creates WebClient
      Parameters:
      baseAddress - baseURI
      providers - list of providers
      threadSafe - if true ThreadLocalClientState is used
      properties - additional properties
    • create

      public static WebClient create(String baseAddress, List<?> providers, long timeToKeepState)
      Creates a thread safe WebClient
      Parameters:
      baseAddress - baseURI
      providers - list of providers
      timeToKeepState - time to keep this thread safe state.
    • create

      public static WebClient create(String baseAddress, List<?> providers, String configLocation)
      Creates WebClient
      Parameters:
      baseAddress - baseAddress
      providers - list of providers
      configLocation - classpath location of the configuration resource, can be null
      Returns:
      WebClient instance
    • create

      public static WebClient create(String baseAddress, List<?> providers, List<? extends org.apache.cxf.feature.Feature> features, String configLocation)
      Creates WebClient with a list of custom features
      Parameters:
      baseAddress - baseAddress
      providers - list of providers
      features - the features which will be applied to the client
      configLocation - classpath location of the configuration resource, can be null
      Returns:
      WebClient instance
    • create

      public static WebClient create(String baseAddress, String configLocation)
      Creates WebClient
      Parameters:
      baseAddress - baseAddress
      configLocation - classpath location of the configuration resource, can be null
      Returns:
      WebClient instance
    • create

      public static WebClient create(String baseAddress, String username, String password, String configLocation)
      Creates WebClient which will do basic authentication
      Parameters:
      baseAddress - baseAddress
      username - username
      password - password
      configLocation - classpath location of the configuration resource, can be null
      Returns:
      WebClient instance
    • create

      public static WebClient create(String baseAddress, List<?> providers, String username, String password, String configLocation)
      Creates WebClient which will do basic authentication
      Parameters:
      baseAddress - baseAddress
      providers - list of providers
      username - username
      password - password
      configLocation - classpath location of the configuration resource, can be null
      Returns:
      WebClient instance
    • fromClientObject

      public static WebClient fromClientObject(Object object)
      Creates WebClient, baseURI will be set to Client currentURI
      Parameters:
      object - existing client object
    • fromClient

      public static WebClient fromClient(Client client)
      Creates WebClient, baseURI will be set to Client currentURI
      Parameters:
      client - existing client
    • fromClient

      public static WebClient fromClient(Client client, boolean inheritHeaders)
      Creates WebClient, baseURI will be set to Client currentURI
      Parameters:
      client - existing client
      inheritHeaders - if existing Client headers can be inherited by new client
    • client

      public static Client client(Object object)
      Converts object to Client
      Parameters:
      object - the object
      Returns:
      Client object converted to Client
    • getConfig

      public static ClientConfiguration getConfig(Object client)
      Retrieves ClientConfiguration
      Parameters:
      client - proxy or http-centric Client
      Returns:
      underlying ClientConfiguration instance
    • invoke

      public jakarta.ws.rs.core.Response invoke(String httpMethod, Object body)
      Does HTTP invocation
      Parameters:
      httpMethod - HTTP method
      body - request body, can be null
      Returns:
      JAXRS Response, entity may hold a string representaion of error message if client or server error occured
    • post

      public jakarta.ws.rs.core.Response post(Object body)
      Does HTTP POST invocation
      Parameters:
      body - request body, can be null
      Returns:
      JAXRS Response
    • put

      public jakarta.ws.rs.core.Response put(Object body)
      Does HTTP PUT invocation
      Parameters:
      body - request body, can be null
      Returns:
      JAXRS Response
    • get

      public jakarta.ws.rs.core.Response get()
      Does HTTP GET invocation
      Returns:
      JAXRS Response
    • head

      public jakarta.ws.rs.core.Response head()
      Does HTTP HEAD invocation
      Returns:
      JAXRS Response
    • options

      public jakarta.ws.rs.core.Response options()
      Does HTTP OPTIONS invocation
      Returns:
      JAXRS Response
    • delete

      public jakarta.ws.rs.core.Response delete()
      Does HTTP DELETE invocation
      Returns:
      JAXRS Response
    • form

      public jakarta.ws.rs.core.Response form(Map<String,List<Object>> values)
      Posts form data
      Parameters:
      values - form values
      Returns:
      JAXRS Response
    • form

      public jakarta.ws.rs.core.Response form(jakarta.ws.rs.core.Form form)
      Posts form data
      Parameters:
      form - form values
      Returns:
      JAXRS Response
    • invoke

      public <T> T invoke(String httpMethod, Object body, jakarta.ws.rs.core.GenericType<T> responseType)
      Does HTTP invocation and returns types response object
      Parameters:
      httpMethod - HTTP method
      body - request body, can be null
      responseType - generic response type
      Returns:
      typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
    • invoke

      public <T> T invoke(String httpMethod, Object body, Class<T> responseClass)
      Does HTTP invocation and returns types response object
      Parameters:
      httpMethod - HTTP method
      body - request body, can be null
      responseClass - expected type of response object
      Returns:
      typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
    • invoke

      public <T> T invoke(String httpMethod, Object body, Class<?> requestClass, Class<T> responseClass)
      Does HTTP invocation and returns types response object
      Parameters:
      httpMethod - HTTP method
      body - request body, can be null
      requestClass - request body class
      responseClass - expected type of response object
      Returns:
      typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
    • post

      public <T> T post(Object body, Class<T> responseClass)
      Does HTTP POST invocation and returns typed response object
      Parameters:
      body - request body, can be null
      responseClass - expected type of response object
      Returns:
      typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
    • post

      public <T> T post(Object body, jakarta.ws.rs.core.GenericType<T> responseType)
      Does HTTP POST invocation and returns typed response object
      Parameters:
      body - request body, can be null
      responseType - generic response type
      Returns:
      typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
    • post

      public <T> Future<T> post(Object body, jakarta.ws.rs.client.InvocationCallback<T> callback)
      Does HTTP Async POST invocation and returns Future. Shortcut for async().post(Entity, InvocationCallback)
      Parameters:
      callback - invocation callback
      Returns:
      the future
    • put

      public <T> T put(Object body, Class<T> responseClass)
      Does HTTP PUT invocation and returns typed response object
      Parameters:
      body - request body, can be null
      responseClass - expected type of response object
      Returns:
      typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
    • put

      public <T> T put(Object body, jakarta.ws.rs.core.GenericType<T> responseType)
      Does HTTP PUT invocation and returns typed response object
      Parameters:
      body - request body, can be null
      responseType - generic response type
      Returns:
      typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
    • put

      public <T> Future<T> put(Object body, jakarta.ws.rs.client.InvocationCallback<T> callback)
      Does HTTP Async PUT invocation and returns Future. Shortcut for async().put(Entity, InvocationCallback)
      Parameters:
      callback - invocation callback
      Returns:
      the future
    • invokeAndGetCollection

      public <T> Collection<? extends T> invokeAndGetCollection(String httpMethod, Object body, Class<T> memberClass)
      Does HTTP invocation and returns a collection of typed objects
      Parameters:
      httpMethod - HTTP method
      body - request body, can be null
      memberClass - expected type of collection member class
      Returns:
      typed collection
    • postCollection

      public <T> jakarta.ws.rs.core.Response postCollection(Object collection, Class<T> memberClass)
      Posts a collection of typed objects
      Parameters:
      collection - request body
      memberClass - type of collection member class
      Returns:
      JAX-RS Response
    • postCollection

      public <T1, T2> T2 postCollection(Object collection, Class<T1> memberClass, Class<T2> responseClass)
      Posts a collection of typed objects
      Parameters:
      collection - request body
      memberClass - type of collection member class
      responseClass - expected type of response object
      Returns:
      JAX-RS Response
    • postAndGetCollection

      public <T1, T2> Collection<? extends T2> postAndGetCollection(Object collection, Class<T1> memberClass, Class<T2> responseClass)
      Posts collection of typed objects and returns a collection of typed objects
      Parameters:
      collection - request body
      memberClass - type of collection member class
      responseClass - expected type of response object
      Returns:
      JAX-RS Response
    • postObjectGetCollection

      public <T> Collection<? extends T> postObjectGetCollection(Object body, Class<T> responseClass)
      Posts the object and returns a collection of typed objects
      Parameters:
      body - request body
      responseClass - expected type of response object
      Returns:
      JAX-RS Response
    • postAndGetCollection

      public <T> Collection<? extends T> postAndGetCollection(Object body, Class<T> memberClass)
      Posts request body and returns a collection of typed objects
      Parameters:
      body - request body, can be null
      memberClass - expected type of collection member class
      Returns:
      typed collection
    • getCollection

      public <T> Collection<? extends T> getCollection(Class<T> memberClass)
      Does HTTP GET invocation and returns a collection of typed objects
      Parameters:
      memberClass - expected type of collection member class
      Returns:
      typed collection
    • get

      public <T> T get(Class<T> responseClass)
      Does HTTP GET invocation and returns typed response object
      Parameters:
      responseClass - expected type of response object
      Returns:
      typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
    • get

      public <T> T get(jakarta.ws.rs.core.GenericType<T> responseType)
      Does HTTP GET invocation and returns typed response object
      Parameters:
      responseType - generic response type
      Returns:
      typed object, can be null. Response status code and headers can be obtained too, see Client.getResponse()
    • get

      public <T> Future<T> get(jakarta.ws.rs.client.InvocationCallback<T> callback)
      Does HTTP Async GET invocation and returns Future. Shortcut for async().get(InvocationCallback)
      Parameters:
      callback - invocation callback
      Returns:
      the future
    • path

      public WebClient path(Object path)
      Updates the current URI path
      Parameters:
      path - new relative path segment
      Returns:
      updated WebClient
    • path

      public WebClient path(String path, Object... values)
      Updates the current URI path with path segment which may contain template variables
      Parameters:
      path - new relative path segment
      values - template variable values
      Returns:
      updated WebClient
    • query

      public WebClient query(String name, Object... values)
      Description copied from class: AbstractClient
      Update the current URI query parameters
      Specified by:
      query in interface Client
      Overrides:
      query in class AbstractClient
      Parameters:
      name - query name
      values - query values
      Returns:
      updated WebClient
    • matrix

      public WebClient matrix(String name, Object... values)
      Updates the current URI matrix parameters
      Parameters:
      name - matrix name
      values - matrix values
      Returns:
      updated WebClient
    • fragment

      public WebClient fragment(String name)
      Updates the current URI fragment
      Parameters:
      name - fragment name
      Returns:
      updated WebClient
    • to

      public WebClient to(String newAddress, boolean forward)
      Moves WebClient to a new baseURI or forwards to new currentURI
      Parameters:
      newAddress - new URI
      forward - if true then currentURI will be based on baseURI
      Returns:
      updated WebClient
    • back

      public WebClient back(boolean fast)
      Goes back
      Parameters:
      fast - if true then goes back to baseURI otherwise to a previous path segment
      Returns:
      updated WebClient
    • replacePath

      public WebClient replacePath(String path)
      Replaces the current path with the new value.
      Parameters:
      path - new path value. If it starts from "/" then all the current path starting from the base URI will be replaced, otherwise only the last path segment will be replaced. Providing a null value is equivalent to calling back(true)
      Returns:
      updated WebClient
    • resetQuery

      public WebClient resetQuery()
      Resets the current query
      Returns:
      updated WebClient
    • replaceQuery

      public WebClient replaceQuery(String queryString)
      Replaces the current query with the new value.
      Parameters:
      queryString - the new value, providing a null is equivalent to calling resetQuery().
      Returns:
      updated WebClient
    • replaceHeader

      public WebClient replaceHeader(String headerName, Object value)
      Replaces the header value with the new values.
      Parameters:
      headerName - headerValues
      value - new values, null is equivalent to removing the header
      Returns:
      updated WebClient
    • replaceQueryParam

      public WebClient replaceQueryParam(String queryParam, Object... value)
      Replaces the current query with the new value.
      Parameters:
      queryParam - query param name
      value - the new value, providing a null is equivalent to calling resetQuery().
      Returns:
      updated WebClient
    • type

      public WebClient type(jakarta.ws.rs.core.MediaType ct)
      Description copied from class: AbstractClient
      Set HTTP Content-Type header
      Specified by:
      type in interface Client
      Overrides:
      type in class AbstractClient
      Parameters:
      ct - JAXRS MediaType representing Content-Type value
      Returns:
      the updated Client
    • type

      public WebClient type(String type)
      Description copied from class: AbstractClient
      Set HTTP Content-Type header
      Specified by:
      type in interface Client
      Overrides:
      type in class AbstractClient
      Parameters:
      type - Content-Type value
      Returns:
      the updated Client
    • accept

      public WebClient accept(jakarta.ws.rs.core.MediaType... types)
      Description copied from class: AbstractClient
      Set HTTP Accept header
      Specified by:
      accept in interface Client
      Overrides:
      accept in class AbstractClient
      Parameters:
      types - list of JAXRS MediaTypes representing Accept header values
      Returns:
      the updated Client
    • accept

      public WebClient accept(String... types)
      Description copied from class: AbstractClient
      Set HTTP Accept header
      Specified by:
      accept in interface Client
      Overrides:
      accept in class AbstractClient
      Parameters:
      types - list of Accept header values
      Returns:
      the updated Client
    • language

      public WebClient language(String language)
      Description copied from class: AbstractClient
      Set HTTP Content-Language header
      Specified by:
      language in interface Client
      Overrides:
      language in class AbstractClient
      Parameters:
      language - Content-Language header value
      Returns:
      the updated Client
    • acceptLanguage

      public WebClient acceptLanguage(String... languages)
      Description copied from class: AbstractClient
      Set HTTP Accept-Language header
      Specified by:
      acceptLanguage in interface Client
      Overrides:
      acceptLanguage in class AbstractClient
      Parameters:
      languages - list of Accept-Language header values
      Returns:
      the updated Client
    • encoding

      public WebClient encoding(String encoding)
      Description copied from class: AbstractClient
      Set HTTP Content-Encoding header
      Specified by:
      encoding in interface Client
      Overrides:
      encoding in class AbstractClient
      Parameters:
      encoding - Content-Encoding header value
      Returns:
      the updated Client
    • acceptEncoding

      public WebClient acceptEncoding(String... encodings)
      Description copied from class: AbstractClient
      Set HTTP Accept-Encoding header
      Specified by:
      acceptEncoding in interface Client
      Overrides:
      acceptEncoding in class AbstractClient
      Parameters:
      encodings - list of Accept-Encoding header value
      Returns:
      the updated Client
    • match

      public WebClient match(jakarta.ws.rs.core.EntityTag tag, boolean ifNot)
      Description copied from class: AbstractClient
      Set HTTP If-Match or If-None-Match header
      Specified by:
      match in interface Client
      Overrides:
      match in class AbstractClient
      Parameters:
      tag - ETag value
      ifNot - if true then If-None-Match is set, If-Match otherwise
      Returns:
      the updated Client
    • modified

      public WebClient modified(Date date, boolean ifNot)
      Description copied from class: AbstractClient
      Set HTTP If-Modified-Since or If-Unmodified-Since header
      Specified by:
      modified in interface Client
      Overrides:
      modified in class AbstractClient
      Parameters:
      date - Date value, will be formated as "EEE, dd MMM yyyy HH:mm:ss zzz"
      ifNot - if true then If-Unmodified-Since is set, If-Modified-Since otherwise
      Returns:
      the updated Client
    • cookie

      public WebClient cookie(jakarta.ws.rs.core.Cookie cookie)
      Description copied from class: AbstractClient
      Set HTTP Cookie header
      Specified by:
      cookie in interface Client
      Overrides:
      cookie in class AbstractClient
      Parameters:
      cookie - Cookie value
      Returns:
      the updated Client
    • authorization

      public WebClient authorization(Object auth)
      Description copied from class: AbstractClient
      Set HTTP Authorization header
      Specified by:
      authorization in interface Client
      Overrides:
      authorization in class AbstractClient
      Parameters:
      auth - Authorization value
      Returns:
      the updated Client
    • header

      public WebClient header(String name, Object... values)
      Description copied from class: AbstractClient
      Set arbitrary HTTP Header
      Specified by:
      header in interface Client
      Overrides:
      header in class AbstractClient
      Parameters:
      name - header name
      values - list of header values
      Returns:
      the updated Client
    • headers

      public WebClient headers(jakarta.ws.rs.core.MultivaluedMap<String,String> map)
      Description copied from class: AbstractClient
      Set HTTP Headers
      Specified by:
      headers in interface Client
      Overrides:
      headers in class AbstractClient
      Parameters:
      map - headers
      Returns:
      the updated Client
    • reset

      public WebClient reset()
      Description copied from class: AbstractClient
      Reset the headers and response state if any
      Specified by:
      reset in interface Client
      Overrides:
      reset in class AbstractClient
      Returns:
      the updated Client
    • doInvoke

      protected jakarta.ws.rs.core.Response doInvoke(String httpMethod, Object body, Type inGenericType, Class<?> responseClass, Type outGenericType)
    • doInvoke

      protected jakarta.ws.rs.core.Response doInvoke(String httpMethod, Object body, Class<?> requestClass, Type inGenericType, Class<?> responseClass, Type outGenericType)
    • doInvokeAsyncCallback

      protected <T> Future<T> doInvokeAsyncCallback(String httpMethod, Object body, Class<?> requestClass, Type inType, jakarta.ws.rs.client.InvocationCallback<T> callback)
    • doInvokeAsync

      protected <T> Future<T> doInvokeAsync(String httpMethod, Object body, Class<?> requestClass, Type inType, Class<?> respClass, Type outType, jakarta.ws.rs.client.InvocationCallback<T> callback)
    • prepareAsyncClient

      protected void prepareAsyncClient(String httpMethod, Object body, Class<?> requestClass, Type inType, Class<?> respClass, Type outType, JaxrsClientCallback<?> cb)
    • retryInvoke

      protected Object retryInvoke(URI newRequestURI, jakarta.ws.rs.core.MultivaluedMap<String,String> headers, Object body, org.apache.cxf.message.Exchange exchange, Map<String,Object> invContext) throws Throwable
      Specified by:
      retryInvoke in class AbstractClient
      Throws:
      Throwable
    • doChainedInvocation

      protected jakarta.ws.rs.core.Response doChainedInvocation(String httpMethod, jakarta.ws.rs.core.MultivaluedMap<String,String> headers, Object body, Class<?> requestClass, Type inType, Annotation[] inAnns, Class<?> respClass, Type outType, org.apache.cxf.message.Exchange exchange, Map<String,Object> invContext)
    • doResponse

      protected jakarta.ws.rs.core.Response doResponse(org.apache.cxf.message.Message m, Class<?> responseClass, Type outGenericType)
    • handleResponse

      protected jakarta.ws.rs.core.Response handleResponse(org.apache.cxf.message.Message outMessage, Class<?> responseClass, Type genericType)
    • async

      public jakarta.ws.rs.client.AsyncInvoker async()
    • sync

      public jakarta.ws.rs.client.SyncInvoker sync()
    • rx

      public jakarta.ws.rs.client.CompletionStageRxInvoker rx()
    • rx

      public jakarta.ws.rs.client.CompletionStageRxInvoker rx(ExecutorService ex)
    • rx

      public <T extends jakarta.ws.rs.client.RxInvoker> T rx(Class<T> rxCls)
    • rx

      public <T extends jakarta.ws.rs.client.RxInvoker> T rx(Class<T> rxCls, ExecutorService executorService)