int-http: исходящий шлюз HttpMessageNotReadableException

Мы использовали int-http: outbound-gateway

<int-http:outbound-gateway request-channel="userDataRequest"
                           id="outboundUserDetailsGateway" url-expression="url"
                           http-method="GET" expected-response-type="com.xxx.UserResponse">
</int-http:outbound-gateway>

Запрос GET, который мы получаем от шлюза исходящей почты, работает нормально. Мы подтвердили это с помощью различных клиентов rest / curl.

Обзор потока

Пользователь попал в почтовый запрос (входящий запрос). Этот запрос получает int-http: inbound-gateway. Чтобы получить некоторые подробности, наша система выполняет один упомянутый выше запрос GET (исходящий запрос) к какой-либо другой системе.

Проблема. Когда входящий запрос (POST) выполняется клиентом curl / jmeter / Advance rest, он работает нормально, однако, если этот запрос от почтальона / бумеранга, он показывает

org.springframework.http.converter.HttpMessageNotReadableException: не удалось прочитать документ: недопустимый символ ((CTRL-CHAR, код 31)): между токенами в [Источник: java.io.PushbackInputStream@3f0a204c; строка: 1, столбец: 2]; вложенное исключение - com.fasterxml.jackson.core.JsonParseException: недопустимый символ ((CTRL-CHAR, код 31)): между токенами в [Источник: java. io.PushbackInputStream@3f0a204c; строка: 1, столбец: 2]

Мы получаем эту ошибку, когда система выполняет запрос исходящего запроса (GET).


person prasingh    schedule 09.06.2017    source источник
comment
Но в чем вопрос? Почему Джексон запрещает использование CTRL-CHAR как пробела?   -  person Artem Bilan    schedule 09.06.2017
comment
Почему он ведет себя по-разному с разным происхождением. Как и в случае с CURL, все в порядке с Restclient, например, с почтальоном. Это показывает указанную ошибку. Жду мыслей, каковы возможные причины несоответствия в поведении исполнения.   -  person prasingh    schedule 12.06.2017
comment
CURL и Java используют разные механизмы для чтения JSON. Более того, CURL не анализирует JSON для конкретного объекта, как это происходит в вашем случае с Джексоном   -  person Artem Bilan    schedule 12.06.2017
comment
кто-нибудь нашел решение?   -  person Udit Kumawat    schedule 28.05.2018
comment
@UditKumawat Добавил мой ответ, который работает для нас.   -  person prasingh    schedule 07.08.2019


Ответы (1)


В нашем случае мы включали application / json в gzip на стороне службы Nginx. Мы просто исключили application / json из gzip, и он у нас работает.

person prasingh    schedule 07.08.2019