SPR-5866 - RestTemplate - access to Request Headers
This commit is contained in:
@@ -52,6 +52,7 @@ import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.client.CommonsClientHttpRequestFactory;
|
||||
import org.springframework.util.FileCopyUtils;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
@@ -177,6 +178,16 @@ public class RestTemplateIntegrationTests {
|
||||
template.postForLocation(URI + "/multipart", parts);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void exchange() throws Exception {
|
||||
HttpHeaders requestHeaders = new HttpHeaders();
|
||||
requestHeaders.set("MyHeader", "MyValue");
|
||||
HttpEntity<?> requestEntity = new HttpEntity(requestHeaders);
|
||||
HttpEntity<String> response =
|
||||
template.exchange(URI + "/{method}", HttpMethod.GET, requestEntity, String.class, "get");
|
||||
assertEquals("Invalid content", helloWorld, response.getBody());
|
||||
}
|
||||
|
||||
|
||||
/** Servlet that returns and error message for a given status code. */
|
||||
private static class ErrorServlet extends GenericServlet {
|
||||
|
||||
@@ -538,6 +538,40 @@ public class RestTemplateTests {
|
||||
verifyMocks();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void exchange() throws Exception {
|
||||
MediaType textPlain = new MediaType("text", "plain");
|
||||
expect(converter.canRead(Integer.class, null)).andReturn(true);
|
||||
expect(converter.getSupportedMediaTypes()).andReturn(Collections.singletonList(textPlain));
|
||||
expect(requestFactory.createRequest(new URI("http://example.com"), HttpMethod.POST)).andReturn(this.request);
|
||||
HttpHeaders requestHeaders = new HttpHeaders();
|
||||
expect(this.request.getHeaders()).andReturn(requestHeaders).times(2);
|
||||
expect(converter.canWrite(String.class, null)).andReturn(true);
|
||||
String body = "Hello World";
|
||||
converter.write(body, null, this.request);
|
||||
expect(this.request.execute()).andReturn(response);
|
||||
expect(errorHandler.hasError(response)).andReturn(false);
|
||||
HttpHeaders responseHeaders = new HttpHeaders();
|
||||
responseHeaders.setContentType(textPlain);
|
||||
expect(response.getHeaders()).andReturn(responseHeaders).times(2);
|
||||
Integer expected = 42;
|
||||
expect(converter.canRead(Integer.class, textPlain)).andReturn(true);
|
||||
expect(converter.read(Integer.class, response)).andReturn(expected);
|
||||
response.close();
|
||||
|
||||
replayMocks();
|
||||
|
||||
HttpEntity<String> requestEntity = new HttpEntity<String>(body, Collections.singletonMap("MyHeader", "MyValue"));
|
||||
HttpEntity<Integer> result = template.exchange("http://example.com", HttpMethod.POST, requestEntity, Integer.class);
|
||||
assertEquals("Invalid POST result", expected, result.getBody());
|
||||
assertEquals("Invalid Content-Type", textPlain, result.getHeaders().getContentType());
|
||||
assertEquals("Invalid Accept header", textPlain.toString(), requestHeaders.getFirst("Accept"));
|
||||
assertEquals("Invalid custom header", "MyValue", requestHeaders.getFirst("MyHeader"));
|
||||
|
||||
verifyMocks();
|
||||
}
|
||||
|
||||
|
||||
private void replayMocks() {
|
||||
replay(requestFactory, request, response, errorHandler, converter);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user