SPR-5866 - RestTemplate - access to Request Headers

This commit is contained in:
Arjen Poutsma 2010-03-11 17:41:30 +00:00
parent 886eb665bf
commit b0e3081636
2 changed files with 23 additions and 5 deletions

View File

@ -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());
}
}
}

View File

@ -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 {