org.springframework.core.codec.DecodingException: ошибка декодирования JSON: недопустимый символ ((CTRL-CHAR, код 31))

Aug 26 2020

Я получаю следующую ошибку при получении ответа почтового метода через WebClient (org.springframework.web.reactive.function.client)

org.springframework.core.codec.DecodingException: JSON decoding error: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens; nested exception is com.fasterxml.jackson.core.JsonParseException: Illegal character ((CTRL-CHAR, code 31)): only regular white space (\r, \n, \t) is allowed between tokens
at [Source: (io.netty.buffer.ByteBufInputStream); line: 1, column: 2]
at org.springframework.http.codec.json.AbstractJackson2Decoder.processException(AbstractJackson2Decoder.java:215)
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Ȁ

Я попытался изменить заголовки запроса, как показано ниже, с ошибкой : -

headers.put("Accept-Encoding", "gzip");

или же

headers.put("Accept-Encoding", "identity");

Это то, что веб-клиент не может обработать сжатый ответ по какой-либо причине !!

Заранее спасибо!!

Ответы

1 Nilotpal Aug 28 2020 at 02:48

Я пропустил реализацию Serializable для объекта ответа.

PrasanthRajendran Nov 12 2020 at 13:53

Я начал получать это исключение из-за симулируемой зависимости загрузки Spring, spring-cloud-openfeign-coreкогда я обновляю версию spring-cloud-openfeign-coreдо 2.2.5.RELEASE.

Те, кто обновится до версии 2.2.5.RELEASE или более поздней версии, столкнутся с этой проблемой, если у них уже есть свойство feign.request.compression=true.

Техническая причина этого в том, что в FeignContentGzipEncodingAutoConfigurationклассе подпись аннотации условного свойства изменена с @ConditionalOnProperty("feign.compression.request.enabled", matchIfMissing = false)на @ConditionalOnProperty(value = "feign.compression.request.enabled"), поэтому по умолчанию FeignContentGzipEncodingInterceptorзапускается. Ссылка на GitHub

Обходной путь

Если вы вызываете службу весенней загрузки, у которой нет механизма для обработки, compressed requestотключите сжатие симулируемого запроса, используя свойство ниже

feign.request.compression=false.

Примечание : К сожалению, мы до сих пор не имеют решения вне коробки в весенне-ботинке для обработки сжатого запроса см