org.springframework.core.codec.DecodingException: JSON-Decodierungsfehler: Unzulässiges Zeichen ((STRG-CHAR, Code 31))

Aug 26 2020

Ich erhalte die folgende Fehlermeldung, wenn ich eine Antwort einer Post-Methode über WebClient erhalte (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: Ȁ

Ich habe versucht, die Header der Anfrage wie unter mit Fehler zu ändern : -

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

oder

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

Ist es so, dass der Webclient die gezippte Antwort aus irgendeinem Grund nicht verarbeiten kann !!

Danke im Voraus!!

Antworten

1 Nilotpal Aug 28 2020 at 02:48

Ich habe die Implementierung von Serializable für das Antwortobjekt verpasst.

PrasanthRajendran Nov 12 2020 at 13:53

Ich habe begonnen, diese Ausnahme mit der vorgetäuschten Abhängigkeit von Spring Boot zu bekommen, spring-cloud-openfeign-corewenn ich die Version von spring-cloud-openfeign-coreauf aktualisiere 2.2.5.RELEASE.

Für diejenigen, die ein Upgrade auf Version 2.2.5.RELEASE oder eine neuere Version durchführen, tritt dieses Problem auf, wenn sie bereits über die Eigenschaft verfügen feign.request.compression=true.

Der technische Grund dafür ist, dass in der FeignContentGzipEncodingAutoConfigurationKlasse die Signatur für bedingte Eigenschaftsanmerkungen von @ConditionalOnProperty("feign.compression.request.enabled", matchIfMissing = false)auf geändert wurde @ConditionalOnProperty(value = "feign.compression.request.enabled")und daher standardmäßig FeignContentGzipEncodingInterceptorausgelöst wird. GitHub-Referenz

Problemumgehung

Wenn Sie einen Spring-Boot-Dienst aufrufen, der nicht über einen Mechanismus zur Behandlung compressed requestdes Vorgangs verfügt, deaktivieren Sie die Komprimierung der Scheinanforderung mithilfe der folgenden Eigenschaft

feign.request.compression=false.

Hinweis : Leider haben wir noch nicht über die Out-of-Box - Lösung im Frühjahr-Boot der komprimierte Anfrage bearbeiten beziehen