Class TestRestTemplate


  • public class TestRestTemplate
    extends Object
    Convenient alternative of RestTemplate that is suitable for integration tests. They are fault tolerant, and optionally can carry Basic authentication headers. If Apache Http Client 4.3.2 or better is available (recommended) it will be used as the client, and by default configured to ignore cookies and redirects.

    Note: To prevent injection problems this class intentionally does not extend RestTemplate. If you need access to the underlying RestTemplate use getRestTemplate().

    If you are using the @SpringBootTest annotation, a TestRestTemplate is automatically available and can be @Autowired into your test. If you need customizations (for example to adding additional message converters) use a RestTemplateBuilder@Bean.

    Since:
    1.4.0
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethodDescription
      voiddelete​(String url, Object... urlVariables)
      Delete the resources at the specified URI.
      voiddelete​(String url, Map<String,​?> urlVariables)
      Delete the resources at the specified URI.
      voiddelete​(URI url)
      Delete the resources at the specified URL.
      <T> org.springframework.http.ResponseEntity<T>exchange​(String url, org.springframework.http.HttpMethod method, org.springframework.http.HttpEntity<?> requestEntity, Class<T> responseType, Object... urlVariables)
      Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity.
      <T> org.springframework.http.ResponseEntity<T>exchange​(String url, org.springframework.http.HttpMethod method, org.springframework.http.HttpEntity<?> requestEntity, Class<T> responseType, Map<String,​?> urlVariables)
      Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity.
      <T> org.springframework.http.ResponseEntity<T>exchange​(String url, org.springframework.http.HttpMethod method, org.springframework.http.HttpEntity<?> requestEntity, org.springframework.core.ParameterizedTypeReference<T> responseType, Object... urlVariables)
      Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity.
      <T> org.springframework.http.ResponseEntity<T>exchange​(String url, org.springframework.http.HttpMethod method, org.springframework.http.HttpEntity<?> requestEntity, org.springframework.core.ParameterizedTypeReference<T> responseType, Map<String,​?> urlVariables)
      Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity.
      <T> org.springframework.http.ResponseEntity<T>exchange​(URI url, org.springframework.http.HttpMethod method, org.springframework.http.HttpEntity<?> requestEntity, Class<T> responseType)
      Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity.
      <T> org.springframework.http.ResponseEntity<T>exchange​(URI url, org.springframework.http.HttpMethod method, org.springframework.http.HttpEntity<?> requestEntity, org.springframework.core.ParameterizedTypeReference<T> responseType)
      Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity.
      <T> org.springframework.http.ResponseEntity<T>exchange​(org.springframework.http.RequestEntity<?> requestEntity, Class<T> responseType)
      Execute the request specified in the given RequestEntity and return the response as ResponseEntity.
      <T> org.springframework.http.ResponseEntity<T>exchange​(org.springframework.http.RequestEntity<?> requestEntity, org.springframework.core.ParameterizedTypeReference<T> responseType)
      Execute the request specified in the given RequestEntity and return the response as ResponseEntity.
      <T> Texecute​(String url, org.springframework.http.HttpMethod method, org.springframework.web.client.RequestCallback requestCallback, org.springframework.web.client.ResponseExtractor<T> responseExtractor, Object... urlVariables)
      Execute the HTTP method to the given URI template, preparing the request with the RequestCallback, and reading the response with a ResponseExtractor.
      <T> Texecute​(String url, org.springframework.http.HttpMethod method, org.springframework.web.client.RequestCallback requestCallback, org.springframework.web.client.ResponseExtractor<T> responseExtractor, Map<String,​?> urlVariables)
      Execute the HTTP method to the given URI template, preparing the request with the RequestCallback, and reading the response with a ResponseExtractor.
      <T> Texecute​(URI url, org.springframework.http.HttpMethod method, org.springframework.web.client.RequestCallback requestCallback, org.springframework.web.client.ResponseExtractor<T> responseExtractor)
      Execute the HTTP method to the given URL, preparing the request with the RequestCallback, and reading the response with a ResponseExtractor.
      <T> org.springframework.http.ResponseEntity<T>getForEntity​(String url, Class<T> responseType, Object... urlVariables)
      Retrieve an entity by doing a GET on the specified URL.
      <T> org.springframework.http.ResponseEntity<T>getForEntity​(String url, Class<T> responseType, Map<String,​?> urlVariables)
      Retrieve a representation by doing a GET on the URI template.
      <T> org.springframework.http.ResponseEntity<T>getForEntity​(URI url, Class<T> responseType)
      Retrieve a representation by doing a GET on the URL .
      <T> TgetForObject​(String url, Class<T> responseType, Object... urlVariables)
      Retrieve a representation by doing a GET on the specified URL.
      <T> TgetForObject​(String url, Class<T> responseType, Map<String,​?> urlVariables)
      Retrieve a representation by doing a GET on the URI template.
      <T> TgetForObject​(URI url, Class<T> responseType)
      Retrieve a representation by doing a GET on the URL .
      org.springframework.web.client.RestTemplategetRestTemplate()
      Returns the underlying RestTemplate that is actually used to perform the REST operations.
      StringgetRootUri()
      Returns the root URI applied by a RootUriTemplateHandler or "" if the root URI is not available.
      org.springframework.http.HttpHeadersheadForHeaders​(String url, Object... urlVariables)
      Retrieve all headers of the resource specified by the URI template.
      org.springframework.http.HttpHeadersheadForHeaders​(String url, Map<String,​?> urlVariables)
      Retrieve all headers of the resource specified by the URI template.
      org.springframework.http.HttpHeadersheadForHeaders​(URI url)
      Retrieve all headers of the resource specified by the URL.
      Set<org.springframework.http.HttpMethod>optionsForAllow​(String url, Object... urlVariables)
      Return the value of the Allow header for the given URI.
      Set<org.springframework.http.HttpMethod>optionsForAllow​(String url, Map<String,​?> urlVariables)
      Return the value of the Allow header for the given URI.
      Set<org.springframework.http.HttpMethod>optionsForAllow​(URI url)
      Return the value of the Allow header for the given URL.
      <T> TpatchForObject​(String url, Object request, Class<T> responseType, Object... uriVariables)
      Update a resource by PATCHing the given object to the URI template, and returns the representation found in the response.
      <T> TpatchForObject​(String url, Object request, Class<T> responseType, Map<String,​?> uriVariables)
      Update a resource by PATCHing the given object to the URI template, and returns the representation found in the response.
      <T> TpatchForObject​(URI url, Object request, Class<T> responseType)
      Update a resource by PATCHing the given object to the URL, and returns the representation found in the response.
      <T> org.springframework.http.ResponseEntity<T>postForEntity​(String url, Object request, Class<T> responseType, Object... urlVariables)
      Create a new resource by POSTing the given object to the URI template, and returns the response as ResponseEntity.
      <T> org.springframework.http.ResponseEntity<T>postForEntity​(String url, Object request, Class<T> responseType, Map<String,​?> urlVariables)
      Create a new resource by POSTing the given object to the URI template, and returns the response as HttpEntity.
      <T> org.springframework.http.ResponseEntity<T>postForEntity​(URI url, Object request, Class<T> responseType)
      Create a new resource by POSTing the given object to the URL, and returns the response as ResponseEntity.
      URIpostForLocation​(String url, Object request, Object... urlVariables)
      Create a new resource by POSTing the given object to the URI template, and returns the value of the Location header.
      URIpostForLocation​(String url, Object request, Map<String,​?> urlVariables)
      Create a new resource by POSTing the given object to the URI template, and returns the value of the Location header.
      URIpostForLocation​(URI url, Object request)
      Create a new resource by POSTing the given object to the URL, and returns the value of the Location header.
      <T> TpostForObject​(String url, Object request, Class<T> responseType, Object... urlVariables)
      Create a new resource by POSTing the given object to the URI template, and returns the representation found in the response.
      <T> TpostForObject​(String url, Object request, Class<T> responseType, Map<String,​?> urlVariables)
      Create a new resource by POSTing the given object to the URI template, and returns the representation found in the response.
      <T> TpostForObject​(URI url, Object request, Class<T> responseType)
      Create a new resource by POSTing the given object to the URL, and returns the representation found in the response.
      voidput​(String url, Object request, Object... urlVariables)
      Create or update a resource by PUTting the given object to the URI.
      voidput​(String url, Object request, Map<String,​?> urlVariables)
      Creates a new resource by PUTting the given object to URI template.
      voidput​(URI url, Object request)
      Creates a new resource by PUTting the given object to URL.
      voidsetUriTemplateHandler​(org.springframework.web.util.UriTemplateHandler handler)
      Configure the UriTemplateHandler to use to expand URI templates.
      TestRestTemplatewithBasicAuth​(String username, String password)
      Creates a new TestRestTemplate with the same configuration as this one, except that it will send basic authorization headers using the given username and password.
    • Constructor Detail

      • TestRestTemplate

        public TestRestTemplate​(org.springframework.boot.web.client.RestTemplateBuilder restTemplateBuilder)
        Create a new TestRestTemplate instance.
        Parameters:
        restTemplateBuilder - builder used to configure underlying RestTemplate
        Since:
        1.4.1
      • TestRestTemplate

        public TestRestTemplate​(org.springframework.boot.web.client.RestTemplateBuilder restTemplateBuilder,
                                String username,
                                String password,
                                TestRestTemplate.HttpClientOption... httpClientOptions)
        Create a new TestRestTemplate instance with the specified credentials.
        Parameters:
        restTemplateBuilder - builder used to configure underlying RestTemplate
        username - the username to use (or null)
        password - the password (or null)
        httpClientOptions - client options to use if the Apache HTTP Client is used
        Since:
        2.0.0
    • Method Detail

      • setUriTemplateHandler

        public void setUriTemplateHandler​(org.springframework.web.util.UriTemplateHandler handler)
        Configure the UriTemplateHandler to use to expand URI templates. By default the DefaultUriBuilderFactory is used which relies on Spring's URI template support and exposes several useful properties that customize its behavior for encoding and for prepending a common base URL. An alternative implementation may be used to plug an external URI template library.
        Parameters:
        handler - the URI template handler to use
      • getRootUri

        public String getRootUri()
        Returns the root URI applied by a RootUriTemplateHandler or "" if the root URI is not available.
        Returns:
        the root URI
      • getForObject

        public <T> T getForObject​(String url,
                                  Class<T> responseType,
                                  Object... urlVariables)
                           throws org.springframework.web.client.RestClientException
        Retrieve a representation by doing a GET on the specified URL. The response (if any) is converted and returned.

        URI Template variables are expanded using the given URI variables, if any.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        responseType - the type of the return value
        urlVariables - the variables to expand the template
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error on client-side HTTP error
        See Also:
        RestTemplate.getForObject(String, Class, Object...)
      • getForObject

        public <T> T getForObject​(String url,
                                  Class<T> responseType,
                                  Map<String,​?> urlVariables)
                           throws org.springframework.web.client.RestClientException
        Retrieve a representation by doing a GET on the URI template. The response (if any) is converted and returned.

        URI Template variables are expanded using the given map.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        responseType - the type of the return value
        urlVariables - the map containing variables for the URI template
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.getForObject(String, Class, Object...)
      • getForObject

        public <T> T getForObject​(URI url,
                                  Class<T> responseType)
                           throws org.springframework.web.client.RestClientException
        Retrieve a representation by doing a GET on the URL . The response (if any) is converted and returned.
        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        responseType - the type of the return value
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.getForObject(java.net.URI, java.lang.Class)
      • getForEntity

        public <T> org.springframework.http.ResponseEntity<T> getForEntity​(String url,
                                                                           Class<T> responseType,
                                                                           Object... urlVariables)
                                                                    throws org.springframework.web.client.RestClientException
        Retrieve an entity by doing a GET on the specified URL. The response is converted and stored in an ResponseEntity.

        URI Template variables are expanded using the given URI variables, if any.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        responseType - the type of the return value
        urlVariables - the variables to expand the template
        Returns:
        the entity
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.getForEntity(java.lang.String, java.lang.Class, java.lang.Object[])
      • getForEntity

        public <T> org.springframework.http.ResponseEntity<T> getForEntity​(String url,
                                                                           Class<T> responseType,
                                                                           Map<String,​?> urlVariables)
                                                                    throws org.springframework.web.client.RestClientException
        Retrieve a representation by doing a GET on the URI template. The response is converted and stored in an ResponseEntity.

        URI Template variables are expanded using the given map.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        responseType - the type of the return value
        urlVariables - the map containing variables for the URI template
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.getForEntity(java.lang.String, java.lang.Class, java.util.Map)
      • getForEntity

        public <T> org.springframework.http.ResponseEntity<T> getForEntity​(URI url,
                                                                           Class<T> responseType)
                                                                    throws org.springframework.web.client.RestClientException
        Retrieve a representation by doing a GET on the URL . The response is converted and stored in an ResponseEntity.
        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        responseType - the type of the return value
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.getForEntity(java.net.URI, java.lang.Class)
      • headForHeaders

        public org.springframework.http.HttpHeaders headForHeaders​(String url,
                                                                   Object... urlVariables)
                                                            throws org.springframework.web.client.RestClientException
        Retrieve all headers of the resource specified by the URI template.

        URI Template variables are expanded using the given URI variables, if any.

        Parameters:
        url - the URL
        urlVariables - the variables to expand the template
        Returns:
        all HTTP headers of that resource
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.headForHeaders(java.lang.String, java.lang.Object[])
      • headForHeaders

        public org.springframework.http.HttpHeaders headForHeaders​(String url,
                                                                   Map<String,​?> urlVariables)
                                                            throws org.springframework.web.client.RestClientException
        Retrieve all headers of the resource specified by the URI template.

        URI Template variables are expanded using the given map.

        Parameters:
        url - the URL
        urlVariables - the map containing variables for the URI template
        Returns:
        all HTTP headers of that resource
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.headForHeaders(java.lang.String, java.util.Map)
      • headForHeaders

        public org.springframework.http.HttpHeaders headForHeaders​(URI url)
                                                            throws org.springframework.web.client.RestClientException
        Retrieve all headers of the resource specified by the URL.
        Parameters:
        url - the URL
        Returns:
        all HTTP headers of that resource
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.headForHeaders(java.net.URI)
      • postForLocation

        public URI postForLocation​(String url,
                                   Object request,
                                   Object... urlVariables)
                            throws org.springframework.web.client.RestClientException
        Create a new resource by POSTing the given object to the URI template, and returns the value of the Location header. This header typically indicates where the new resource is stored.

        URI Template variables are expanded using the given URI variables, if any.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Parameters:
        url - the URL
        request - the Object to be POSTed, may be null
        urlVariables - the variables to expand the template
        Returns:
        the value for the Location header
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        HttpEntity, RestTemplate.postForLocation(java.lang.String, java.lang.Object, java.lang.Object[])
      • postForLocation

        public URI postForLocation​(String url,
                                   Object request,
                                   Map<String,​?> urlVariables)
                            throws org.springframework.web.client.RestClientException
        Create a new resource by POSTing the given object to the URI template, and returns the value of the Location header. This header typically indicates where the new resource is stored.

        URI Template variables are expanded using the given map.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Parameters:
        url - the URL
        request - the Object to be POSTed, may be null
        urlVariables - the variables to expand the template
        Returns:
        the value for the Location header
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        HttpEntity, RestTemplate.postForLocation(java.lang.String, java.lang.Object, java.util.Map)
      • postForLocation

        public URI postForLocation​(URI url,
                                   Object request)
                            throws org.springframework.web.client.RestClientException
        Create a new resource by POSTing the given object to the URL, and returns the value of the Location header. This header typically indicates where the new resource is stored.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Parameters:
        url - the URL
        request - the Object to be POSTed, may be null
        Returns:
        the value for the Location header
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        HttpEntity, RestTemplate.postForLocation(java.net.URI, java.lang.Object)
      • postForObject

        public <T> T postForObject​(String url,
                                   Object request,
                                   Class<T> responseType,
                                   Object... urlVariables)
                            throws org.springframework.web.client.RestClientException
        Create a new resource by POSTing the given object to the URI template, and returns the representation found in the response.

        URI Template variables are expanded using the given URI variables, if any.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        request - the Object to be POSTed, may be null
        responseType - the type of the return value
        urlVariables - the variables to expand the template
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        HttpEntity, RestTemplate.postForObject(java.lang.String, java.lang.Object, java.lang.Class, java.lang.Object[])
      • postForObject

        public <T> T postForObject​(String url,
                                   Object request,
                                   Class<T> responseType,
                                   Map<String,​?> urlVariables)
                            throws org.springframework.web.client.RestClientException
        Create a new resource by POSTing the given object to the URI template, and returns the representation found in the response.

        URI Template variables are expanded using the given map.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        request - the Object to be POSTed, may be null
        responseType - the type of the return value
        urlVariables - the variables to expand the template
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        HttpEntity, RestTemplate.postForObject(java.lang.String, java.lang.Object, java.lang.Class, java.util.Map)
      • postForObject

        public <T> T postForObject​(URI url,
                                   Object request,
                                   Class<T> responseType)
                            throws org.springframework.web.client.RestClientException
        Create a new resource by POSTing the given object to the URL, and returns the representation found in the response.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        request - the Object to be POSTed, may be null
        responseType - the type of the return value
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        HttpEntity, RestTemplate.postForObject(java.net.URI, java.lang.Object, java.lang.Class)
      • postForEntity

        public <T> org.springframework.http.ResponseEntity<T> postForEntity​(String url,
                                                                            Object request,
                                                                            Class<T> responseType,
                                                                            Object... urlVariables)
                                                                     throws org.springframework.web.client.RestClientException
        Create a new resource by POSTing the given object to the URI template, and returns the response as ResponseEntity.

        URI Template variables are expanded using the given URI variables, if any.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        request - the Object to be POSTed, may be null
        responseType - the response type to return
        urlVariables - the variables to expand the template
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        HttpEntity, RestTemplate.postForEntity(java.lang.String, java.lang.Object, java.lang.Class, java.lang.Object[])
      • postForEntity

        public <T> org.springframework.http.ResponseEntity<T> postForEntity​(String url,
                                                                            Object request,
                                                                            Class<T> responseType,
                                                                            Map<String,​?> urlVariables)
                                                                     throws org.springframework.web.client.RestClientException
        Create a new resource by POSTing the given object to the URI template, and returns the response as HttpEntity.

        URI Template variables are expanded using the given map.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        request - the Object to be POSTed, may be null
        responseType - the response type to return
        urlVariables - the variables to expand the template
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        HttpEntity, RestTemplate.postForEntity(java.lang.String, java.lang.Object, java.lang.Class, java.util.Map)
      • postForEntity

        public <T> org.springframework.http.ResponseEntity<T> postForEntity​(URI url,
                                                                            Object request,
                                                                            Class<T> responseType)
                                                                     throws org.springframework.web.client.RestClientException
        Create a new resource by POSTing the given object to the URL, and returns the response as ResponseEntity.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        request - the Object to be POSTed, may be null
        responseType - the response type to return
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        HttpEntity, RestTemplate.postForEntity(java.net.URI, java.lang.Object, java.lang.Class)
      • put

        public void put​(String url,
                        Object request,
                        Object... urlVariables)
                 throws org.springframework.web.client.RestClientException
        Create or update a resource by PUTting the given object to the URI.

        URI Template variables are expanded using the given URI variables, if any.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Parameters:
        url - the URL
        request - the Object to be PUT, may be null
        urlVariables - the variables to expand the template
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        HttpEntity, RestTemplate.put(java.lang.String, java.lang.Object, java.lang.Object[])
      • put

        public void put​(String url,
                        Object request,
                        Map<String,​?> urlVariables)
                 throws org.springframework.web.client.RestClientException
        Creates a new resource by PUTting the given object to URI template.

        URI Template variables are expanded using the given map.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Parameters:
        url - the URL
        request - the Object to be PUT, may be null
        urlVariables - the variables to expand the template
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        HttpEntity, RestTemplate.put(java.lang.String, java.lang.Object, java.util.Map)
      • put

        public void put​(URI url,
                        Object request)
                 throws org.springframework.web.client.RestClientException
        Creates a new resource by PUTting the given object to URL.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Parameters:
        url - the URL
        request - the Object to be PUT, may be null
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        HttpEntity, RestTemplate.put(java.net.URI, java.lang.Object)
      • patchForObject

        public <T> T patchForObject​(String url,
                                    Object request,
                                    Class<T> responseType,
                                    Object... uriVariables)
                             throws org.springframework.web.client.RestClientException
        Update a resource by PATCHing the given object to the URI template, and returns the representation found in the response.

        URI Template variables are expanded using the given URI variables, if any.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        request - the Object to be PATCHed, may be null
        responseType - the type of the return value
        uriVariables - the variables to expand the template
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        Since:
        1.4.4
        See Also:
        HttpEntity
      • patchForObject

        public <T> T patchForObject​(String url,
                                    Object request,
                                    Class<T> responseType,
                                    Map<String,​?> uriVariables)
                             throws org.springframework.web.client.RestClientException
        Update a resource by PATCHing the given object to the URI template, and returns the representation found in the response.

        URI Template variables are expanded using the given map.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        request - the Object to be PATCHed, may be null
        responseType - the type of the return value
        uriVariables - the variables to expand the template
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        Since:
        1.4.4
        See Also:
        HttpEntity
      • patchForObject

        public <T> T patchForObject​(URI url,
                                    Object request,
                                    Class<T> responseType)
                             throws org.springframework.web.client.RestClientException
        Update a resource by PATCHing the given object to the URL, and returns the representation found in the response.

        The request parameter can be a HttpEntity in order to add additional HTTP headers to the request.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        request - the Object to be POSTed, may be null
        responseType - the type of the return value
        Returns:
        the converted object
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        Since:
        1.4.4
        See Also:
        HttpEntity
      • delete

        public void delete​(String url,
                           Object... urlVariables)
                    throws org.springframework.web.client.RestClientException
        Delete the resources at the specified URI.

        URI Template variables are expanded using the given URI variables, if any.

        Parameters:
        url - the URL
        urlVariables - the variables to expand in the template
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.delete(java.lang.String, java.lang.Object[])
      • delete

        public void delete​(String url,
                           Map<String,​?> urlVariables)
                    throws org.springframework.web.client.RestClientException
        Delete the resources at the specified URI.

        URI Template variables are expanded using the given map.

        Parameters:
        url - the URL
        urlVariables - the variables to expand the template
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.delete(java.lang.String, java.util.Map)
      • delete

        public void delete​(URI url)
                    throws org.springframework.web.client.RestClientException
        Delete the resources at the specified URL.
        Parameters:
        url - the URL
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.delete(java.net.URI)
      • optionsForAllow

        public Set<org.springframework.http.HttpMethod> optionsForAllow​(String url,
                                                                        Object... urlVariables)
                                                                 throws org.springframework.web.client.RestClientException
        Return the value of the Allow header for the given URI.

        URI Template variables are expanded using the given URI variables, if any.

        Parameters:
        url - the URL
        urlVariables - the variables to expand in the template
        Returns:
        the value of the allow header
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.optionsForAllow(java.lang.String, java.lang.Object[])
      • optionsForAllow

        public Set<org.springframework.http.HttpMethod> optionsForAllow​(String url,
                                                                        Map<String,​?> urlVariables)
                                                                 throws org.springframework.web.client.RestClientException
        Return the value of the Allow header for the given URI.

        URI Template variables are expanded using the given map.

        Parameters:
        url - the URL
        urlVariables - the variables to expand in the template
        Returns:
        the value of the allow header
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.optionsForAllow(java.lang.String, java.util.Map)
      • optionsForAllow

        public Set<org.springframework.http.HttpMethod> optionsForAllow​(URI url)
                                                                 throws org.springframework.web.client.RestClientException
        Return the value of the Allow header for the given URL.
        Parameters:
        url - the URL
        Returns:
        the value of the allow header
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.optionsForAllow(java.net.URI)
      • exchange

        public <T> org.springframework.http.ResponseEntity<T> exchange​(String url,
                                                                       org.springframework.http.HttpMethod method,
                                                                       org.springframework.http.HttpEntity<?> requestEntity,
                                                                       Class<T> responseType,
                                                                       Object... urlVariables)
                                                                throws org.springframework.web.client.RestClientException
        Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity.

        URI Template variables are expanded using the given URI variables, if any.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        method - the HTTP method (GET, POST, etc)
        requestEntity - the entity (headers and/or body) to write to the request, may be null
        responseType - the type of the return value
        urlVariables - the variables to expand in the template
        Returns:
        the response as entity
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.exchange(java.lang.String, org.springframework.http.HttpMethod, org.springframework.http.HttpEntity, java.lang.Class, java.lang.Object[])
      • exchange

        public <T> org.springframework.http.ResponseEntity<T> exchange​(String url,
                                                                       org.springframework.http.HttpMethod method,
                                                                       org.springframework.http.HttpEntity<?> requestEntity,
                                                                       Class<T> responseType,
                                                                       Map<String,​?> urlVariables)
                                                                throws org.springframework.web.client.RestClientException
        Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity.

        URI Template variables are expanded using the given URI variables, if any.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        method - the HTTP method (GET, POST, etc)
        requestEntity - the entity (headers and/or body) to write to the request, may be null
        responseType - the type of the return value
        urlVariables - the variables to expand in the template
        Returns:
        the response as entity
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.exchange(java.lang.String, org.springframework.http.HttpMethod, org.springframework.http.HttpEntity, java.lang.Class, java.util.Map)
      • exchange

        public <T> org.springframework.http.ResponseEntity<T> exchange​(URI url,
                                                                       org.springframework.http.HttpMethod method,
                                                                       org.springframework.http.HttpEntity<?> requestEntity,
                                                                       Class<T> responseType)
                                                                throws org.springframework.web.client.RestClientException
        Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity.
        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        method - the HTTP method (GET, POST, etc)
        requestEntity - the entity (headers and/or body) to write to the request, may be null
        responseType - the type of the return value
        Returns:
        the response as entity
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.exchange(java.net.URI, org.springframework.http.HttpMethod, org.springframework.http.HttpEntity, java.lang.Class)
      • exchange

        public <T> org.springframework.http.ResponseEntity<T> exchange​(String url,
                                                                       org.springframework.http.HttpMethod method,
                                                                       org.springframework.http.HttpEntity<?> requestEntity,
                                                                       org.springframework.core.ParameterizedTypeReference<T> responseType,
                                                                       Object... urlVariables)
                                                                throws org.springframework.web.client.RestClientException
        Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity. The given ParameterizedTypeReference is used to pass generic type information:
         ParameterizedTypeReference<List<MyBean>> myBean = new ParameterizedTypeReference<List<MyBean>>() {};
         ResponseEntity<List<MyBean>> response = template.exchange("http://example.com",HttpMethod.GET, null, myBean);
         
        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        method - the HTTP method (GET, POST, etc)
        requestEntity - the entity (headers and/or body) to write to the request, may be null
        responseType - the type of the return value
        urlVariables - the variables to expand in the template
        Returns:
        the response as entity
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.exchange(java.lang.String, org.springframework.http.HttpMethod, org.springframework.http.HttpEntity, org.springframework.core.ParameterizedTypeReference, java.lang.Object[])
      • exchange

        public <T> org.springframework.http.ResponseEntity<T> exchange​(String url,
                                                                       org.springframework.http.HttpMethod method,
                                                                       org.springframework.http.HttpEntity<?> requestEntity,
                                                                       org.springframework.core.ParameterizedTypeReference<T> responseType,
                                                                       Map<String,​?> urlVariables)
                                                                throws org.springframework.web.client.RestClientException
        Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity. The given ParameterizedTypeReference is used to pass generic type information:
         ParameterizedTypeReference<List<MyBean>> myBean = new ParameterizedTypeReference<List<MyBean>>() {};
         ResponseEntity<List<MyBean>> response = template.exchange("http://example.com",HttpMethod.GET, null, myBean);
         
        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        method - the HTTP method (GET, POST, etc)
        requestEntity - the entity (headers and/or body) to write to the request, may be null
        responseType - the type of the return value
        urlVariables - the variables to expand in the template
        Returns:
        the response as entity
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.exchange(java.lang.String, org.springframework.http.HttpMethod, org.springframework.http.HttpEntity, org.springframework.core.ParameterizedTypeReference, java.util.Map)
      • exchange

        public <T> org.springframework.http.ResponseEntity<T> exchange​(URI url,
                                                                       org.springframework.http.HttpMethod method,
                                                                       org.springframework.http.HttpEntity<?> requestEntity,
                                                                       org.springframework.core.ParameterizedTypeReference<T> responseType)
                                                                throws org.springframework.web.client.RestClientException
        Execute the HTTP method to the given URI template, writing the given request entity to the request, and returns the response as ResponseEntity. The given ParameterizedTypeReference is used to pass generic type information:
         ParameterizedTypeReference<List<MyBean>> myBean = new ParameterizedTypeReference<List<MyBean>>() {};
         ResponseEntity<List<MyBean>> response = template.exchange("http://example.com",HttpMethod.GET, null, myBean);
         
        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        method - the HTTP method (GET, POST, etc)
        requestEntity - the entity (headers and/or body) to write to the request, may be null
        responseType - the type of the return value
        Returns:
        the response as entity
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.exchange(java.net.URI, org.springframework.http.HttpMethod, org.springframework.http.HttpEntity, org.springframework.core.ParameterizedTypeReference)
      • exchange

        public <T> org.springframework.http.ResponseEntity<T> exchange​(org.springframework.http.RequestEntity<?> requestEntity,
                                                                       Class<T> responseType)
                                                                throws org.springframework.web.client.RestClientException
        Execute the request specified in the given RequestEntity and return the response as ResponseEntity. Typically used in combination with the static builder methods on RequestEntity, for instance:
         MyRequest body = ...
         RequestEntity request = RequestEntity.post(new URI("http://example.com/foo")).accept(MediaType.APPLICATION_JSON).body(body);
         ResponseEntity<MyResponse> response = template.exchange(request, MyResponse.class);
         
        Type Parameters:
        T - the type of the return value
        Parameters:
        requestEntity - the entity to write to the request
        responseType - the type of the return value
        Returns:
        the response as entity
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.exchange(org.springframework.http.RequestEntity, java.lang.Class)
      • exchange

        public <T> org.springframework.http.ResponseEntity<T> exchange​(org.springframework.http.RequestEntity<?> requestEntity,
                                                                       org.springframework.core.ParameterizedTypeReference<T> responseType)
                                                                throws org.springframework.web.client.RestClientException
        Execute the request specified in the given RequestEntity and return the response as ResponseEntity. The given ParameterizedTypeReference is used to pass generic type information:
         MyRequest body = ...
         RequestEntity request = RequestEntity.post(new URI("http://example.com/foo")).accept(MediaType.APPLICATION_JSON).body(body);
         ParameterizedTypeReference<List<MyResponse>> myBean = new ParameterizedTypeReference<List<MyResponse>>() {};
         ResponseEntity<List<MyResponse>> response = template.exchange(request, myBean);
         
        Type Parameters:
        T - the type of the return value
        Parameters:
        requestEntity - the entity to write to the request
        responseType - the type of the return value
        Returns:
        the response as entity
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.exchange(org.springframework.http.RequestEntity, org.springframework.core.ParameterizedTypeReference)
      • execute

        public <T> T execute​(String url,
                             org.springframework.http.HttpMethod method,
                             org.springframework.web.client.RequestCallback requestCallback,
                             org.springframework.web.client.ResponseExtractor<T> responseExtractor,
                             Object... urlVariables)
                      throws org.springframework.web.client.RestClientException
        Execute the HTTP method to the given URI template, preparing the request with the RequestCallback, and reading the response with a ResponseExtractor.

        URI Template variables are expanded using the given URI variables, if any.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        method - the HTTP method (GET, POST, etc)
        requestCallback - object that prepares the request
        responseExtractor - object that extracts the return value from the response
        urlVariables - the variables to expand in the template
        Returns:
        an arbitrary object, as returned by the ResponseExtractor
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.execute(java.lang.String, org.springframework.http.HttpMethod, org.springframework.web.client.RequestCallback, org.springframework.web.client.ResponseExtractor, java.lang.Object[])
      • execute

        public <T> T execute​(String url,
                             org.springframework.http.HttpMethod method,
                             org.springframework.web.client.RequestCallback requestCallback,
                             org.springframework.web.client.ResponseExtractor<T> responseExtractor,
                             Map<String,​?> urlVariables)
                      throws org.springframework.web.client.RestClientException
        Execute the HTTP method to the given URI template, preparing the request with the RequestCallback, and reading the response with a ResponseExtractor.

        URI Template variables are expanded using the given URI variables map.

        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        method - the HTTP method (GET, POST, etc)
        requestCallback - object that prepares the request
        responseExtractor - object that extracts the return value from the response
        urlVariables - the variables to expand in the template
        Returns:
        an arbitrary object, as returned by the ResponseExtractor
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.execute(java.lang.String, org.springframework.http.HttpMethod, org.springframework.web.client.RequestCallback, org.springframework.web.client.ResponseExtractor, java.util.Map)
      • execute

        public <T> T execute​(URI url,
                             org.springframework.http.HttpMethod method,
                             org.springframework.web.client.RequestCallback requestCallback,
                             org.springframework.web.client.ResponseExtractor<T> responseExtractor)
                      throws org.springframework.web.client.RestClientException
        Execute the HTTP method to the given URL, preparing the request with the RequestCallback, and reading the response with a ResponseExtractor.
        Type Parameters:
        T - the type of the return value
        Parameters:
        url - the URL
        method - the HTTP method (GET, POST, etc)
        requestCallback - object that prepares the request
        responseExtractor - object that extracts the return value from the response
        Returns:
        an arbitrary object, as returned by the ResponseExtractor
        Throws:
        org.springframework.web.client.RestClientException - on client-side HTTP error
        See Also:
        RestTemplate.execute(java.net.URI, org.springframework.http.HttpMethod, org.springframework.web.client.RequestCallback, org.springframework.web.client.ResponseExtractor)
      • getRestTemplate

        public org.springframework.web.client.RestTemplate getRestTemplate()
        Returns the underlying RestTemplate that is actually used to perform the REST operations.
        Returns:
        the restTemplate
      • withBasicAuth

        public TestRestTemplate withBasicAuth​(String username,
                                              String password)
        Creates a new TestRestTemplate with the same configuration as this one, except that it will send basic authorization headers using the given username and password.
        Parameters:
        username - the username
        password - the password
        Returns:
        the new template
        Since:
        1.4.1