org.springframework.core.codec.DecodingException: JSON kod çözme hatası: Geçersiz karakter ((CTRL-CHAR, kod 31))

Aug 26 2020

WebClient (org.springframework.web.reactive.function.client) aracılığıyla bir gönderi yönteminin yanıtını alırken aşağıdaki hatayı alıyorum

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: Ȁ

İsteğin başlıklarını başarısızlıkla değiştirmeyi denedim : -

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

veya

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

Web istemcisinin gzip'lenmiş yanıtı herhangi bir nedenle işleyememesinden mi?

Şimdiden teşekkürler!!

Yanıtlar

1 Nilotpal Aug 28 2020 at 02:48

Serializable'ı yanıt nesnesine uygulamayı kaçırdım.

PrasanthRajendran Nov 12 2020 at 13:53

Ben Bahar çizme en uydurmak olarak bağımlılık ile bu özel durum alma başlamıştır spring-cloud-openfeign-coreı sürümünü yükseltirken spring-cloud-openfeign-coreiçin 2.2.5.RELEASE.

2.2.5.RELEASE sürümüne veya sonraki sürüme yükseltme yapanlar için, zaten mülke sahiplerse bu sorunla karşılaşacaklardır feign.request.compression=true.

Bunun arkasındaki teknik sebebi de vardır FeignContentGzipEncodingAutoConfigurationsınıftan değiştirildi şartlı mülkiyet açıklama imza @ConditionalOnProperty("feign.compression.request.enabled", matchIfMissing = false)için @ConditionalOnProperty(value = "feign.compression.request.enabled")varsayılan bu yüzden tarafından, FeignContentGzipEncodingInterceptortetiklenir. GitHub referansı

Geçici çözüm

compressed requestİşlemek için bir mekanizmaya sahip olmayan bir yaylı önyükleme hizmetini çağırıyorsanız , aşağıdaki özelliği kullanarak sahte istek sıkıştırmasını devre dışı bırakın

feign.request.compression=false.

NOT : Ne yazık ki, biz hala sıkıştırılmış isteği işlemek için yay bagaja dışı kutu çözümü yok bakın