SPR-5866 - RestTemplate - access to Request Headers

master
Arjen Poutsma 15 years ago
parent 886eb665bf
commit b0e3081636
  1. 15
      org.springframework.web/src/main/java/org/springframework/web/client/RestTemplate.java
  2. 13
      org.springframework.web/src/test/java/org/springframework/web/client/RestTemplateIntegrationTests.java

@ -587,12 +587,21 @@ public class RestTemplate extends HttpAccessor implements RestOperations {
private final HttpMessageConverterExtractor<T> delegate;
public HttpEntityResponseExtractor(Class<T> responseType) {
this.delegate = new HttpMessageConverterExtractor<T>(responseType, getMessageConverters());
if (responseType != null) {
this.delegate = new HttpMessageConverterExtractor<T>(responseType, getMessageConverters());
} else {
this.delegate = null;
}
}
public HttpEntity<T> extractData(ClientHttpResponse response) throws IOException {
T body = delegate.extractData(response);
return new HttpEntity<T>(body, response.getHeaders());
if (delegate != null) {
T body = delegate.extractData(response);
return new HttpEntity<T>(body, response.getHeaders());
}
else {
return new HttpEntity<T>(response.getHeaders());
}
}
}

@ -50,9 +50,9 @@ import org.mortbay.jetty.servlet.ServletHolder;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
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;
@ -179,7 +179,7 @@ public class RestTemplateIntegrationTests {
}
@Test
public void exchange() throws Exception {
public void exchangeGet() throws Exception {
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.set("MyHeader", "MyValue");
HttpEntity<?> requestEntity = new HttpEntity(requestHeaders);
@ -188,6 +188,15 @@ public class RestTemplateIntegrationTests {
assertEquals("Invalid content", helloWorld, response.getBody());
}
@Test
public void exchangePost() throws Exception {
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.set("MyHeader", "MyValue");
HttpEntity<String> requestEntity = new HttpEntity<String>(helloWorld, requestHeaders);
HttpEntity<?> result = template.exchange(URI + "/{method}", HttpMethod.POST, requestEntity, null, "post");
assertEquals("Invalid location", new URI(URI + "/post/1"), result.getHeaders().getLocation());
assertFalse(result.hasBody());
}
/** Servlet that returns and error message for a given status code. */
private static class ErrorServlet extends GenericServlet {

Loading…
Cancel
Save