[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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147// -------------------------------------------------------------------------------- // Program.java file: // -------------------------------------------------------------------------------- package com.dirask.example; public class Program { public static void main(String[] args) throws Exception { MessageRequest messageRequest = new MessageRequest(); messageRequest.setTitle("Invitation"); messageRequest.setContent("Hi there!!!"); ExtendedRestTemplate restTemplate = new ExtendedRestTemplate(); MessageResponse messageResponse = restTemplate.getForObject("http://localhost/api/message/send", messageRequest, MessageResponse.class); // <--- GET method request with body System.out.println("Result: " + messageResponse.getResult()); System.out.println("Error: " + messageResponse.getError()); } } // 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); } } // -------------------------------------------------------------------------------- // MessageRequest.java file (example class used to exchange data): // -------------------------------------------------------------------------------- package com.dirask.example; public class MessageRequest { private String title; private String content; public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; } public String getContent() { return this.content; } public void setContent(String content) { this.content = content; } } // -------------------------------------------------------------------------------- // MessageResponse.java file (example class used to exchange data): // -------------------------------------------------------------------------------- package com.dirask.example; private class MessageResponse { public Boolean result; public String error; public Boolean getResult() { return this.result; } public void setResult(Boolean result) { this.result = result; } public String getError() { return this.error; } public void setError(String error) { this.error = error; } }