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");

क्या यह है कि webclient किसी भी कारण से gzipped प्रतिक्रिया को संसाधित करने में असमर्थ है !!

अग्रिम में धन्यवाद!!

जवाब

1 Nilotpal Aug 28 2020 at 02:48

मैं प्रतिक्रिया वस्तु के लिए सीरियल को लागू करने से चूक गया।

PrasanthRajendran Nov 12 2020 at 13:53

spring-cloud-openfeign-coreजब मैंने इसके संस्करण को अपग्रेड किया तो मुझे स्प्रिंग बूट की सामयिक निर्भरता के साथ यह अपवाद मिलना शुरू हो spring-cloud-openfeign-coreगया 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.

नोट : दुर्भाग्य से, हमारे पास अभी भी संकुचित अनुरोध संदर्भ को संभालने के लिए स्प्रिंग-बूट में आउट-ऑफ-बॉक्स समाधान नहीं है