|
|
@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
/* |
|
|
|
* Copyright 2002-2014 the original author or authors. |
|
|
|
* Copyright 2002-2015 the original author or authors. |
|
|
|
* |
|
|
|
* |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
@ -596,7 +596,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat |
|
|
|
logger.debug(method.name() + " request for \"" + url + "\" resulted in " + |
|
|
|
logger.debug(method.name() + " request for \"" + url + "\" resulted in " + |
|
|
|
response.getRawStatusCode() + " (" + response.getStatusText() + ")"); |
|
|
|
response.getRawStatusCode() + " (" + response.getStatusText() + ")"); |
|
|
|
} |
|
|
|
} |
|
|
|
catch (IOException e) { |
|
|
|
catch (IOException ex) { |
|
|
|
// ignore
|
|
|
|
// ignore
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -608,7 +608,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat |
|
|
|
logger.warn(method.name() + " request for \"" + url + "\" resulted in " + |
|
|
|
logger.warn(method.name() + " request for \"" + url + "\" resulted in " + |
|
|
|
response.getRawStatusCode() + " (" + response.getStatusText() + "); invoking error handler"); |
|
|
|
response.getRawStatusCode() + " (" + response.getStatusText() + "); invoking error handler"); |
|
|
|
} |
|
|
|
} |
|
|
|
catch (IOException e) { |
|
|
|
catch (IOException ex) { |
|
|
|
// ignore
|
|
|
|
// ignore
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -668,12 +668,11 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void doWithRequest(ClientHttpRequest request) throws IOException { |
|
|
|
public void doWithRequest(ClientHttpRequest request) throws IOException { |
|
|
|
if (responseType != null) { |
|
|
|
if (this.responseType != null) { |
|
|
|
Class<?> responseClass = null; |
|
|
|
Class<?> responseClass = null; |
|
|
|
if (responseType instanceof Class) { |
|
|
|
if (this.responseType instanceof Class) { |
|
|
|
responseClass = (Class<?>) responseType; |
|
|
|
responseClass = (Class<?>) this.responseType; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<MediaType> allSupportedMediaTypes = new ArrayList<MediaType>(); |
|
|
|
List<MediaType> allSupportedMediaTypes = new ArrayList<MediaType>(); |
|
|
|
for (HttpMessageConverter<?> converter : getMessageConverters()) { |
|
|
|
for (HttpMessageConverter<?> converter : getMessageConverters()) { |
|
|
|
if (responseClass != null) { |
|
|
|
if (responseClass != null) { |
|
|
@ -682,13 +681,11 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else if (converter instanceof GenericHttpMessageConverter) { |
|
|
|
else if (converter instanceof GenericHttpMessageConverter) { |
|
|
|
|
|
|
|
|
|
|
|
GenericHttpMessageConverter<?> genericConverter = (GenericHttpMessageConverter<?>) converter; |
|
|
|
GenericHttpMessageConverter<?> genericConverter = (GenericHttpMessageConverter<?>) converter; |
|
|
|
if (genericConverter.canRead(responseType, null, null)) { |
|
|
|
if (genericConverter.canRead(this.responseType, null, null)) { |
|
|
|
allSupportedMediaTypes.addAll(getSupportedMediaTypes(converter)); |
|
|
|
allSupportedMediaTypes.addAll(getSupportedMediaTypes(converter)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
if (!allSupportedMediaTypes.isEmpty()) { |
|
|
|
if (!allSupportedMediaTypes.isEmpty()) { |
|
|
|
MediaType.sortBySpecificity(allSupportedMediaTypes); |
|
|
|
MediaType.sortBySpecificity(allSupportedMediaTypes); |
|
|
@ -744,9 +741,9 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat |
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
public void doWithRequest(ClientHttpRequest httpRequest) throws IOException { |
|
|
|
public void doWithRequest(ClientHttpRequest httpRequest) throws IOException { |
|
|
|
super.doWithRequest(httpRequest); |
|
|
|
super.doWithRequest(httpRequest); |
|
|
|
if (!requestEntity.hasBody()) { |
|
|
|
if (!this.requestEntity.hasBody()) { |
|
|
|
HttpHeaders httpHeaders = httpRequest.getHeaders(); |
|
|
|
HttpHeaders httpHeaders = httpRequest.getHeaders(); |
|
|
|
HttpHeaders requestHeaders = requestEntity.getHeaders(); |
|
|
|
HttpHeaders requestHeaders = this.requestEntity.getHeaders(); |
|
|
|
if (!requestHeaders.isEmpty()) { |
|
|
|
if (!requestHeaders.isEmpty()) { |
|
|
|
httpHeaders.putAll(requestHeaders); |
|
|
|
httpHeaders.putAll(requestHeaders); |
|
|
|
} |
|
|
|
} |
|
|
@ -755,9 +752,9 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else { |
|
|
|
else { |
|
|
|
Object requestBody = requestEntity.getBody(); |
|
|
|
Object requestBody = this.requestEntity.getBody(); |
|
|
|
Class<?> requestType = requestBody.getClass(); |
|
|
|
Class<?> requestType = requestBody.getClass(); |
|
|
|
HttpHeaders requestHeaders = requestEntity.getHeaders(); |
|
|
|
HttpHeaders requestHeaders = this.requestEntity.getHeaders(); |
|
|
|
MediaType requestContentType = requestHeaders.getContentType(); |
|
|
|
MediaType requestContentType = requestHeaders.getContentType(); |
|
|
|
for (HttpMessageConverter<?> messageConverter : getMessageConverters()) { |
|
|
|
for (HttpMessageConverter<?> messageConverter : getMessageConverters()) { |
|
|
|
if (messageConverter.canWrite(requestType, requestContentType)) { |
|
|
|
if (messageConverter.canWrite(requestType, requestContentType)) { |
|
|
|