Этот фрагмент кода ничего не делает:
HeaderMapper<HttpHeaders> mapper = new DefaultHttpHeaderMapper();
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add(HttpHeaders.CONTENT_TYPE,
MediaType.APPLICATION_JSON_VALUE);
mapper.toHeaders(httpHeaders);
То, что toHeaders()
вызывается из HttpRequestExecutingMessageHandler
, когда мы получаем ответ.Это действительно бесполезно использовать в явном виде в вашем коде, особенно на этапе определения бина и когда вы игнорируете результат.
Вам вообще не нужно использовать явный HeaderMapper
: значение по умолчанию должно бытьдостаточно для вас.
ObjectToJsonTransformer
действительно отображает, что setContentType()
, в заголовки сообщения, на которое он отвечает:
if (headers.containsKey(MessageHeaders.CONTENT_TYPE)) {
// override, unless empty
if (this.contentTypeExplicitlySet && StringUtils.hasLength(this.contentType)) {
headers.put(MessageHeaders.CONTENT_TYPE, this.contentType);
}
}
else if (StringUtils.hasLength(this.contentType)) {
headers.put(MessageHeaders.CONTENT_TYPE, this.contentType);
}
Итак, существует соответствующий тип контента для сопоставления.По умолчанию HttpRequestExecutingMessageHandler
использует:
/**
* Factory method for creating a basic outbound mapper instance.
* This will map all standard HTTP request headers when sending an HTTP request,
* and it will map all standard HTTP response headers when receiving an HTTP response.
* @return The default outbound mapper.
*/
public static DefaultHttpHeaderMapper outboundMapper() {
С соответствующим набором заголовков для сопоставления с HTTP-запросом и HTTP-ответом.
new DefaultHttpHeaderMapper()
приносит только пустой набор заголовков дляmap.
Пожалуйста, поднимите вопрос, чтобы улучшить JavaDocs и Справочное руководство, чтобы заметить, что ctor по умолчанию этого класса не приносит никаких заголовков на карту.