org.springframework.core.codec.DecodingException: JSON डिकोडिंग त्रुटि: अवैध चरित्र ((CTRL-CHAR, कोड 31))
मुझे 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 प्रतिक्रिया को संसाधित करने में असमर्थ है !!
अग्रिम में धन्यवाद!!
जवाब
मैं प्रतिक्रिया वस्तु के लिए सीरियल को लागू करने से चूक गया।
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.
नोट : दुर्भाग्य से, हमारे पास अभी भी संकुचित अनुरोध संदर्भ को संभालने के लिए स्प्रिंग-बूट में आउट-ऑफ-बॉक्स समाधान नहीं है