Проблема с откликом приложения / json, сбрасываемым в Spring Integration 4.2
Создание HTTP-прокси в Spring Integration 4.2.1.RELEASE. Среда использует новейшую спецификацию платформы 2.0.0.RELEASE, включая слой spring-webmvc, работающий на Tomcat7.
Вызовы «application / json», передаваемые через веб-слой другой конечной точке сервера REST (метод setupUrl перезаписывает URL-адрес). Код успешно вызывает внешний сервер, получает хороший ответ, затем корректирует ответ, прежде чем он возвращается вызывающей стороне.
@Bean
public IntegrationFlow httpProxyFlow() {
return IntegrationFlows
.from((MessagingGateways g) ->
g.httpGateway("/my-service/**")
.messageConverters(new MappingJackson2HttpMessageConverter())
.payloadFunction(httpEntity ->
((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes())
.getRequest()
.getQueryString())
.requestPayloadType(String.class))
.handleWithAdapter(a ->
a.httpGateway(this::setupUrl)
.httpMethodFunction(this::getMethodFunction)
.errorHandler(new PassThroughErrorHandler())
.encodeUri(false)
.expectedResponseType(String.class)
).get();
}
Вызов непосредственно к конечной точке REST возвращается
{ "Филиал": "Тест", "производитель": "ТСТ", "продукты" ...
Пока звонок через Spring Integration возвращается
"{\" Филиал \ ": \" тест \ "\ "производитель \": \ "TST \", \ "продукции \": [{\"
Перепробовал множество комбинаций добавления StringHttpMessageConverter к исходящему адаптеру. Возиться с кодировками (UTF-8, а не ISO-8859-1). Что-то портит строку ответа, и кажется, что ПОСЛЕ того, как она оставляет Spring Integration, насколько я могу судить. В последний раз, когда Integration затрагивает ее, это строка 117. HttpRequestHandlingMessagingGateway.handleRequest (). Она по-прежнему выглядит корректно в объекте ответа.
Возможно, проблема действительно в spring-mvc, это первое место, где я вижу искаженную строку в отладке.