[Edit]
+
0
-
0
Spring Boot 3 - RestTemplate and GET method request with body (JSON payload)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74// -------------------------------------------------------------------------------- // Usage example: // -------------------------------------------------------------------------------- ExtendedRestTemplate restTemplate = new ExtendedRestTemplate(); SomeRequest someRequest = new SomeRequest(1L, "John", "john@email.com"); SomeResponse someResponse = restTemplate.getForObject("http://localhost/api/some-path", someRequest, SomeResponse.class); // <--- GET method request with body // See also: // // 1. https://dirask.com/snippets/Spring-Boot-3-RestTemplate-with-custom-HTTPS-SSL-certificate-1GM8Yp // 2. https://dirask.com/snippets/Spring-Boot-3-RestTemplate-with-ignored-HTTPS-SSL-certificate-ignore-untrusted-certificates-1bQZJj // -------------------------------------------------------------------------------- // ExtendedRestTemplate.java file (it allows to send GET requests with body): // -------------------------------------------------------------------------------- package com.dirask.example; import java.net.URI; import java.util.List; import java.util.Map; import org.springframework.http.HttpMethod; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.lang.Nullable; import org.springframework.web.client.HttpMessageConverterExtractor; import org.springframework.web.client.RequestCallback; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; public class ExtendedRestTemplate extends RestTemplate { public ExtendedRestTemplate() { super(); } public ExtendedRestTemplate(ClientHttpRequestFactory requestFactory) { super(requestFactory); } public ExtendedRestTemplate(List<HttpMessageConverter<?>> messageConverters) { super(messageConverters); } @Nullable public <T> T getForObject(URI url, @Nullable Object requestObject, Class<T> responseType) throws RestClientException { List<HttpMessageConverter<?>> messageConverters = super.getMessageConverters(); RequestCallback requestCallback = super.httpEntityCallback(requestObject, responseType); HttpMessageConverterExtractor<T> responseExtractor = new HttpMessageConverterExtractor<>(responseType, messageConverters); return super.execute(url, HttpMethod.GET, requestCallback, responseExtractor); } @Nullable public <T> T getForObject(String url, @Nullable Object requestObject, Class<T> responseType, Object... uriVariables) throws RestClientException { List<HttpMessageConverter<?>> messageConverters = super.getMessageConverters(); RequestCallback requestCallback = httpEntityCallback(requestObject, responseType); HttpMessageConverterExtractor<T> responseExtractor = new HttpMessageConverterExtractor<>(responseType, messageConverters); return super.execute(url, HttpMethod.GET, requestCallback, responseExtractor, uriVariables); } @Nullable public <T> T getForObject(String url, @Nullable Object requestObject, Class<T> responseType, Map<String, ?> uriVariables) throws RestClientException { List<HttpMessageConverter<?>> messageConverters = super.getMessageConverters(); RequestCallback requestCallback = super.httpEntityCallback(requestObject, responseType); HttpMessageConverterExtractor<T> responseExtractor = new HttpMessageConverterExtractor<>(responseType, messageConverters); return super.execute(url, HttpMethod.GET, requestCallback, responseExtractor, uriVariables); } }