वसंत JSON अनुरोध 406 (स्वीकार्य नहीं)


85

यह मेरी जावास्क्रिप्ट है:

    function getWeather() {
        $.getJSON('getTemperature/' + $('.data option:selected').val(), null, function(data) {
            alert('Success');                               
        });
    }

यह मेरा नियंत्रक है:

@RequestMapping(value="/getTemperature/{id}", headers="Accept=*/*", method = RequestMethod.GET)
@ResponseBody
public Weather getTemparature(@PathVariable("id") Integer id){
    Weather weather = weatherService.getCurrentWeather(id);
        return weather;
}

वसंत-servlet.xml

<context:annotation-config />
<tx:annotation-driven />

यह त्रुटि हो रही है:

GET http://localhost:8080/web/getTemperature/2 406 (Not Acceptable)

हेडर:

रिस्पांस हेडर

Server  Apache-Coyote/1.1
Content-Type    text/html;charset=utf-8
Content-Length  1070
Date    Sun, 18 Sep 2011 17:00:35 GMT

अनुरोध हेड

Host    localhost:8080
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Accept  application/json, text/javascript, */*; q=0.01
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection  keep-alive
X-Requested-With    XMLHttpRequest
Referer http://localhost:8080/web/weather
Cookie  JSESSIONID=7D27FAC18050ED84B58DAFB0A51CB7E4

दिलचस्प नोट:

मुझे 406 त्रुटि मिलती है, लेकिन हाइबरनेट क्वेरी इस बीच काम करती है। यह तब कहते हैं, जब मैं ड्रॉपबॉक्स में चयन बदलता हूं, तो टॉमकैट लॉग कहता है:

 select weather0_.ID as ID0_0_, weather0_.CITY_ID as CITY2_0_0_, weather0_.DATE as DATE0_0_, weather0_.TEMP as TEMP0_0_ from WEATHER weather0_ where weather0_.ID=?

समस्या क्या हो सकती है? इससे पहले एसओ में दो समान प्रश्न थे, मैंने वहां सभी स्वीकृत संकेतों की कोशिश की, लेकिन वे काम नहीं करते थे जो मुझे लगता है ...

कोई सुझाव? नि: संकोच प्रश्न पूछिए...

जवाबों:


107

406 स्वीकार्य नहीं है

अनुरोध द्वारा पहचाना गया संसाधन केवल प्रतिक्रिया देने वाली संस्थाओं को उत्पन्न करने में सक्षम है जिनके पास अनुरोध में भेजे गए हेडर के अनुसार स्वीकार्य नहीं है।

इसलिए, आपके अनुरोध को स्वीकार करें हेडर एप्लिकेशन / जसन है और आपका नियंत्रक वह वापस करने में सक्षम नहीं है। ऐसा तब होता है जब सही HTTPMessageConverter @ResponseBody एनोटेट रिटर्न वैल्यू को संतुष्ट करने के लिए नहीं मिल सकता है। जब आप कक्षा में <mvc:annotation-driven>कुछ 3-डी पार्टी लाइब्रेरी देते हैं , तो HTTPMessageConverter स्वचालित रूप से पंजीकृत हो जाता है।

या तो आपके पास अपने वर्गपथ में सही जैक्सन लाइब्रेरी नहीं है, या आपने <mvc:annotation-driven>निर्देश का उपयोग नहीं किया है ।

मैंने सफलतापूर्वक आपके परिदृश्य को दोहराया और इन दो पुस्तकालयों और किसी headers="Accept=*/*"निर्देश का उपयोग करके ठीक काम किया ।

  • जैक्सन कोर-ASL-1.7.4.jar
  • जैक्सन-नक्शाकार-ASL-1.7.4.jar

नहीं, यह समस्या नहीं थी, मेरे जवाब की जाँच करें।
जानूस

यदि HttpMessageConverters को मैन्युअल रूप से कॉन्फ़िगर करना आपकी समस्या को हल करता है, तो mvc: एनोटेशन-चालित का उपयोग वही करेगा जो यह कन्वर्टर्स और हैंडलर एडेप्टर (HA) को स्वचालित रूप से कॉन्फ़िगर करता है। ध्यान दें कि यदि आप किसी हा को स्पष्ट रूप से कॉन्फ़िगर करते हैं, तो यह अन्य सभी चूक को रद्द कर देगा।
विलु

हम्म, वह क्या है mvc? मैंने इस्तेमाल किया <tx:annotation-driven />और tx हैxmlns:tx="http://www.springframework.org/schema/tx"
जानूस

1
आपको कुछ ऐसा मिला: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">और वसंत-वेब-3.0.x और वसंत-वेबमिक्स-3.0.x जार?
विलु

1
आह, मैं वहाँ उस योजनाबद्धता नहीं था..लेकिन धन्यवाद, इससे मुझे मदद मिली। मुझे लगा कि tx:annotation-drivenयह वही है mvc:annotation-driveया स्मथिन है।
जानूस

74

मेरे पास एक ही मुद्दा था, नवीनतम वसंत 4.1.1 के साथ आपको pom.xml में निम्नलिखित जार जोड़ने की आवश्यकता है।

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.4.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.1.1</version>
</dependency>

यह भी सुनिश्चित करें कि आपके पास निम्नलिखित जार हैं:

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

406 स्प्रिंग एमवीसी जोंस, "स्वीकार" हेडर के अनुरोध के अनुसार स्वीकार्य नहीं है


यह उत्तर शीर्ष उत्तर का मैवेन जागरूक संस्करण है, और यह पूर्वगामी रूप से काम करता है! मावेन अपवादों के बारे में अधिक स्पष्ट हो सकता है कि वास्तव में हुड के नीचे क्या चल रहा है।
Cotta

4
क्या आप यह प्रदान कर सकते हैं कि यह स्प्रिंग्स आधिकारिक दस्तावेज पर कहां दर्ज किया गया है? किसी को कैसे पता चल सकता है कि यह समस्या है?
एडेलिन

आपको केवल जैकसन-डेटाबाइंड और जैकसन-मैपर-एसएल पर निर्भरता निर्दिष्ट करने की आवश्यकता है, अन्य दो सकर्मक निर्भरताएं हैं और वैसे भी हल हो जाएंगे।
ऐरे १

1
यह केवल दूसरे दो आश्रितों को जोड़ने के बाद मेरे लिए काम किया। धन्यवाद।
डॉकवॉटसन

आपको निश्चित रूप से दोनों की आवश्यकता नहीं है। वसंत MappingJacksonHttpMessageConverterजैक्सन 1 के लिए और MappingJackson2HttpMessageConverterजैक्सन 2 के लिए जोड़ देगा । इनमें से प्रत्येक JSON को सीरीज़ / डिसरसाइज़ करने के लिए पर्याप्त है। आपको केवल एक की आवश्यकता है (जैक्सन 2 के साथ जाएं क्योंकि यह अधिक सुविधा संपन्न है)।
सोटिरिओस डेलिमोनोलिस

16

एक और मामला है जहां यह स्थिति वापस आ जाएगी: यदि जैक्सन मैपर यह पता नहीं लगा सकता है कि आपके बीन को कैसे अनुक्रमित किया जाए। उदाहरण के लिए, यदि आपके पास एक ही बूलियन प्रॉपर्टी के लिए दो एक्सेसर विधि हैं, isFoo()और getFoo()

क्या हो रहा है कि स्प्रिंग का मैपिंगजैकसन 2 हैटपेसमैसेज कॉनक्वर्टर जैक्सन के StdSerializerProvider को यह देखने के लिए कहता है कि क्या यह आपकी वस्तु को परिवर्तित कर सकता है। कॉल श्रृंखला के निचले भाग में, सूचनात्मक संदेश के साथ StdSerializerProvider._createAndCacheUntypedSerializerफेंकता है JsonMappingException। हालाँकि, इस अपवाद को निगल लिया जाता है StdSerializerProvider._createAndCacheUntypedSerializer, जो स्प्रिंग को बताता है कि यह ऑब्जेक्ट को परिवर्तित नहीं कर सकता है। कन्वर्टर्स के रन आउट होने के बाद, स्प्रिंग रिपोर्ट में कहा गया है कि इसे Acceptहेडर नहीं दिया जा सकता है जिसका वह उपयोग कर सकता है, जब आप इसे दे रहे हों तो कौन सा फर्जी है */*

इस व्यवहार के लिए एक बग है, लेकिन इसे "पुन: पेश नहीं कर सकता" के रूप में बंद कर दिया गया था: जिस पद्धति को बुलाया जा रहा है वह यह घोषित नहीं करता है कि यह फेंक सकता है, इसलिए अपवादों को निगलना जाहिरा तौर पर एक उपयुक्त समाधान है (हाँ, यह व्यंग्य था)। दुर्भाग्य से, जैक्सन के पास कोई लॉगिंग नहीं है ... और कोडबेस में बहुत सारी टिप्पणियां हैं जो इसे करना चाहते हैं, इसलिए मुझे संदेह है कि यह एकमात्र छिपी हुई गैचा नहीं है।


आपको बहुत - बहुत धन्यवाद! मैं स्प्रिंग एमवीसी के लिए नया हूं और जानसन को वापस लाने के लिए वास्तव में कठिन समय था। हर कोई 406 त्रुटियों के कारण के रूप में @ResponseBody एनोटेशन और जैक्सन निर्भरता गायब होने का उल्लेख करता है। मेरे मामले में, यह पता चला है कि मैं एक सार्वजनिक क्षेत्र के लिए एक एक्सेसर विधि को याद कर रहा था, जिस वस्तु को मैं JSON के रूप में वापस करना चाहता था।
एंथोनी जैक

धन्यवाद @kdgregory! मैं एक क्षेत्र के लिए गेटटर / सेटर जोड़ना भूल गया। उन्हें इस मुद्दे को जोड़कर।
रुबेंस मरिज़ो

16

मेरे पास एक ही समस्या थी, मेरी नियंत्रक पद्धति निष्पादित हुई लेकिन प्रतिक्रिया 406 त्रुटि है। मैंने डिबग किया AbstractMessageConverterMethodProcessor#writeWithMessageConvertersऔर पाया कि विधि ContentNegotiationManager#resolveMediaTypesहमेशा रिटर्न text/htmlकरती है जो कि समर्थित नहीं है MappingJacksonHttpMessageConverter। समस्या यह है कि मेरे अनुरोध org.springframework.web.accept.ServletPathExtensionContentNegotiationStrategyसे पहले org.springframework.web.accept.HeaderContentNegotiationStrategyऔर मेरे एक्सटेंशन का विस्तार /get-clients.htmlत्रुटि 406 के साथ मेरी समस्या का कारण है। मैंने अभी अनुरोध यूआरएल को बदल दिया है /get-clients


हाय एटोट, मेरे पास एक ही समस्या है और अनुरोध के विस्तार को बदलने के बारे में आपकी टिप ने मेरी समस्या को हल किया। अपना समाधान साझा करने के लिए बहुत धन्यवाद !!
jherranzm

मेरे मामले में यह (टेस्ट में) एक एक्सटेंशन के साथ एक रेस्ट पाथ आईडी था, जो एक ही कारण से 406 का कारण बना, जबकि सामान्य कंट्रोलर काम करता है (भले ही आप रेस्ट पथ आईडी में एक्सटेंशन का उपयोग करना चाहते थे)।
जुआर

9

सुनिश्चित करें कि निम्नलिखित 2 jar's वर्ग पथ में मौजूद हैं।

यदि कोई एक या दोनों गायब हैं तो यह त्रुटि आएगी।

jackson-core-asl-1.9.X.jar jackson-mapper-asl-1.9.X.jar

6

अंत में यहाँ से उत्तर मिला:

वसंत के लिए आराम से अजाक्स अनुरोध मानचित्रण

मैं उद्धृत करता हूं:

@ RequestBody / @ रिस्पॉन्सबॉडी एनोटेशन सामान्य दृश्य रिज़ॉल्वर का उपयोग नहीं करते हैं, वे अपने स्वयं के HttpMessageConverters का उपयोग करते हैं। इन एनोटेशन का उपयोग करने के लिए, आपको इन कन्वर्टर्स को एनोटेशन मेथोडहैंडलर एडेप्टर में कॉन्फ़िगर करना चाहिए, जैसा कि संदर्भ में वर्णित है (आपको संभवतः मैपिंगजैकसनहॉट्सपेसमैसेज कैनोर्टर की आवश्यकता है)।


3

Dispatcherservlet.xml <mvc:annotation-driven />में जाँच करें , अगर यह नहीं है। और जोड़

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

आपके pom.xml में ये निर्भरताएँ


2
<dependency>
    <groupId>com.fasterxml.jackson.jaxrs</groupId>
    <artifactId>jackson-jaxrs-base</artifactId>
    <version>2.6.3</version>
</dependency>

2
इस कोड को इस सवाल का जवाब कर सकते हैं, के बारे में अतिरिक्त संदर्भ प्रदान करने के लिए कैसे और / या क्यों यह हल करती है समस्या जवाब की दीर्घकालिक मूल्य में सुधार होगा।
फ्रांसेस्को मेंज़ानी

2

संभवत: कोई भी इसे दूर नहीं कर रहा है, लेकिन उपरोक्त में से किसी भी समाधान ने इसे मेरे लिए तय नहीं किया है, लेकिन मेरे सभी गेट्टर तरीकों publicने किया।

मैंने पैकेज-प्राइवेट में अपनी गेटवे दृश्यता छोड़ दी; जैक्सन ने फैसला किया कि यह उन्हें नहीं मिल सकता और उड़ा दिया। ( @JsonAutoDetect(getterVisibility=NON_PRIVATE)केवल आंशिक रूप से इसे उपयोग करके तय किया गया।


यह वास्तव में मेरा मुद्दा था। मैंने अपने बसने वालों को जनता से संरक्षित कर दिया और जैक्सन ने काम करना बंद कर दिया।
जुआनमिगेल

यहाँ एक ही समस्या है, मैं AbstractMap.SimpleImmutableEntryतो डाउनग्रेड किया गया था AbstractMap.SimpleEntry, अभी भी कोई पासा नहीं है क्योंकि यह कुंजी के लिए एक सेटर नहीं है। इस पर पूजो चला गया।
रॉबर्ट बैन

2

सुनिश्चित करें कि भेजे गए ऑब्जेक्ट (इस मामले में मौसम) में गेटटर / सेटर है


1

नियंत्रक में, प्रतिसाद बॉडी एनोटेशन रिटर्न प्रकार पर नहीं होना चाहिए और न ही विधि, जैसे:

@RequestMapping(value="/getTemperature/{id}", headers="Accept=*/*", method = RequestMethod.GET)
public @ResponseBody Weather getTemparature(@PathVariable("id") Integer id){
    Weather weather = weatherService.getCurrentWeather(id);
        return weather;
}

मैं कच्चे jquery.ajax फ़ंक्शन का भी उपयोग करता हूं, और सुनिश्चित करें कि सामग्री टाइप और डेटा टाइप सही तरीके से सेट किए जा रहे हैं।

एक अलग नोट पर, मुझे लगता है कि समस्याग्रस्त जोंस के वसंत से निपटने। यह आसान था जब मैंने स्ट्रिंग्स, और जीएसओएन का उपयोग करके यह सब खुद किया।


प्लेसमेंट का @ResponseBodyमहत्व नहीं होना चाहिए ... मैं जीएसओएन में देखूंगा ... लेकिन फिर भी यह JSON काम करना चाहेगा।
जानूस

1

जैसा कि @atott ने उल्लेख किया है

यदि आपने अपने pom.xml में जैक्सन का नवीनतम संस्करण जोड़ा है, और स्प्रिंग 4.0 या नए के साथ, @ResponseBodyअपने एक्शन विधि का उपयोग करके और के @RequestMappingसाथ कॉन्फ़िगर किया गया है produces="application/json;charset=utf-8", हालांकि, आपको अभी भी 406 मिला (स्वीकार्य नहीं है), मुझे लगता है कि आपको इसमें प्रयास करने की आवश्यकता है आपका MVC डिस्पैचरसर्वर संदर्भ विन्यास:

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" />

<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="favorPathExtension" value="false" />
</bean>

यही तरीका है कि मैंने आखिरकार अपने मुद्दे को कैसे हल किया।


1

स्प्रिंग 4.3.10: मैंने समस्या को हल करने के लिए नीचे की सेटिंग्स का उपयोग किया।

चरण 1: नीचे निर्भरताएं जोड़ें

    <dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.6.7</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.7</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-core-asl</artifactId>
    <version>1.9.13</version>
</dependency>
<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>1.9.13</version>
</dependency>

चरण 2: अपने MVC डिस्पैचर में नीचे जोड़ें संदर्भ संदर्भ विन्यास:

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager"/>

<bean id="contentNegotiationManager"
    class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="favorPathExtension" value="false"/>
    <property name="favorParameter" value="true"/>
    <property name="ignoreAcceptHeader" value="false" />
</bean>

चूंकि स्प्रिंग 3.2, डिफ़ॉल्ट कॉन्फ़िगरेशन के अनुसार पक्षपातीता के रूप में सही है, इस कारण से यदि अनुरोध uri में कोई उचित एक्सटेंशन है जैसे .htmवसंत एक्सटेंशन के लिए प्राथमिकता देगा। चरण 2 में मैंने इसे ओवरराइड करने के लिए contentNegotiationManager बीन को जोड़ा था।


1

मुझे वही समस्या हो रही थी क्योंकि मुझे @EnableWebMvc एनोटेशन याद आ रहा था। (मेरे सभी स्प्रिंग कॉन्फ़िगरेशन एनोटेशन-आधारित हैं, XML समतुल्य mvc होगा: एनोटेशन-चालित)


0

सुनिश्चित करें कि आपके पास आपके क्लासपैथ में सही जैक्सन संस्करण है


मैंने अपने WEB-INF/libफ़ोल्डर में जैकसन-ऑल-1.8.5.jar जोड़ा , लेकिन अभी भी वही समस्या है: /
जानूस

0

@Joyfun ने जैकसन के सही संस्करण के लिए जांच की, लेकिन हमारे हेडर की भी जांच करें ... ग्राहक द्वारा स्वीकार / प्रेषित नहीं किया जा सकता है ... चेकबग या समकक्ष का उपयोग करके यह जांचने के लिए कि आपका अनुरोध क्या वास्तव में भेज रहा है। मुझे लगता है कि एनोटेशन के हेडर विशेषता / / शाब्दिक जाँच कर सकते हैं, हालांकि मैं 100% निश्चित नहीं हूं।


मैंने फायरबग से मुख्य पोस्ट में हेडर को जोड़ा। क्या वे ठीक हैं?
जानूस

0

इसके बाद अन्य स्पष्ट समस्याएं मेरे पास एक और थीं जो मैं संभव नहीं कर पाया, जिसमें स्प्रिंग सर्वलेट में सभी संभव जार, निर्भरता और एनोटेशन शामिल थे। आखिरकार मैंने पाया कि मेरे पास गलत फाइल एक्सटेंशन है, मेरा मतलब है कि मेरे पास एक ही कंटेनर में दो अलग-अलग सर्वलेट चल रहे थे और मुझे अलग-अलग फाइल एक्सटेंशन में मैप करने की जरूरत थी, जहां एक ".do" था और दूसरा सदस्यता के रूप में इस्तेमाल किया गया था। विषय"। सभी अच्छे लेकिन SUB मान्य फ़ाइल एक्सटेंशन है जो आमतौर पर फिल्मों की उपशीर्षक फ़ाइलों के लिए उपयोग किया जाता है और इस प्रकार टॉमकैट हेडर को ओवरराइड कर रहा था और "टेक्स्ट / x-DVD.sub ..." जैसी किसी चीज़ को वापस कर रहा था, इसलिए यह सब ठीक था लेकिन एप्लिकेशन को JSON की उम्मीद थी लेकिन सबटाइटल्स इस प्रकार मुझे बस इतना करना होगा कि web.xmlमैंने अपनी फ़ाइल में मैपिंग बदल दी है:

<mime-mapping>
    <extension>sub</extension>
    <mime-type>application/json</mime-type>
</mime-mapping>

0

मेरे पास एक ही समस्या थी दुर्भाग्य से समाधान के बिना मेरी समस्या हल हो गई क्योंकि मेरी समस्या एक अलग वर्ग में कुछ थी।

मैंने पहली बार जाँच की कि सभी निर्भरताएँ जगह हैं जैसा कि @bekur द्वारा सुझाया गया है, तब मैंने अनुरोध / प्रतिक्रिया की जाँच की जो क्लाइंट से सर्वर तक सभी हेडर की यात्रा करता है जो कि Jquery द्वारा ठीक से सेट किया गया था। मैंने तब जाँच की RequestMappingHandlerAdapter MessageConvertersऔर उनमें से सभी 7 जगह थे, मैं वास्तव में वसंत से नफरत करने लगा था! मैं तो वसंत से करने के लिए अद्यतन 4.0.6.RELEASEकरने के लिए 4.2.0.RELEASEमैं नहीं बल्कि ऊपर से एक और प्रतिक्रिया मिली है। ये थाRequest processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type

यहाँ मेरी नियंत्रक विधि है

  @RequestMapping(value = "/upload", method = RequestMethod.POST,produces = "application/json")
    public ResponseEntity<UploadPictureResult> pictureUpload(FirewalledRequest initialRequest) {

        DefaultMultipartHttpServletRequest request = (DefaultMultipartHttpServletRequest) initialRequest.getRequest();

        try {
            Iterator<String> iterator = request.getFileNames();

            while (iterator.hasNext()) {
                MultipartFile file = request.getFile(iterator.next());
                session.save(toImage(file));
            }
        } catch (Exception e) {
            return new ResponseEntity<UploadPictureResult>(new UploadPictureResult(),HttpStatus.INTERNAL_SERVER_ERROR);
        }
        return new ResponseEntity<UploadPictureResult>(new UploadPictureResult(), HttpStatus.OK);
    } 




    public class UploadPictureResult extends WebResponse{

    private List<Image> images;

    public void setImages(List<Image> images) {
        this.images = images;
    }
}






    public class WebResponse implements Serializable {


    protected String message;

    public WebResponse() {
    }

    public WebResponse(String message) {

        this.message = message;
    }


    public void setMessage(String message) {
        this.message = message;
    }
}

समाधान यह था कि UploadPictureResult को WebResponse नहीं बढ़ाया जाए

किसी कारण से स्प्रिंग यह निर्धारित करने में सक्षम नहीं था कि वह WebPesponse बढ़ाते समय UploadPictureReslt को कैसे परिवर्तित किया जाए


0
<dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.8.0</version>
    </dependency>

मैं ssl प्रमाणीकरण का उपयोग नहीं करता हूं और इस jackson-databind में jackson-core.jar और jackson-databind.jar होते हैं, और फिर इस तरह से RequestMapping सामग्री बदलें:

@RequestMapping(value = "/id/{number}", produces = "application/json; charset=UTF-8", method = RequestMethod.GET)
public @ResponseBody Customer findCustomer(@PathVariable int number){
    Customer result = customerService.findById(number);
    return result;
}

ध्यान दें: यदि आपकी उपज "एप्लिकेशन / जोंस" प्रकार नहीं है और मैंने इस पर ध्यान नहीं दिया है और 406 त्रुटि मिली है, तो यह मदद कर सकता है।


0

इस धागे की जाँच करें। स्प्रिंग mvc रेस्टकंट्रोलर वापसी json string p / s: आपको अपने WebMvcConfiel क्लास में जैक बेटा मैपिंग कॉन्फिगर जोड़ना चाहिए

@Override protected void configureMessageConverters( List<HttpMessageConverter<?>> converters) { // put the jackson converter to the front of the list so that application/json content-type strings will be treated as JSON converters.add(new MappingJackson2HttpMessageConverter()); // and probably needs a string converter too for text/plain content-type strings to be properly handled converters.add(new StringHttpMessageConverter()); }


0

यह स्प्रिंगव्यू = 5.0.3 के लिए अद्यतन उत्तर है। कृपया।

ऊपर दिए गए उत्तर केवल पुराने स्प्रिंगवॉर्म <4.1 संस्करण में काम करेंगे । नवीनतम वसंत के लिए आपको ढाल फ़ाइल में निम्न निर्भरताएँ जोड़नी होंगी:

compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: fasterxmljackson
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: fasterxmljackson

fasterxmljackson=2.9.4

मुझे उम्मीद है कि यह नवीनतम स्प्रिंग संस्करण का उपयोग करने वाले लोगों के लिए उपयोगी होगा।


-3

क्या आप हेडर तत्व को @RequestMapping में हटा सकते हैं और आज़मा सकते हैं ..

पसंद


@RequestMapping(value="/getTemperature/{id}", method = RequestMethod.GET)

मुझे लगता है कि वसंत हेडर स्वीकार करने के लिए सटीक मैच के बजाय एक 'चेक' होता है। लेकिन फिर भी, हेडर तत्व को हटाने और जांचने की कोशिश करने के लायक है।


मैंने हटा दिया, लेकिन अभी भी त्रुटि है। Btw जब मैं टॉमकैट लॉग देखता हूं, तो इसके साथ क्वेरी weatherService.getCurrentWeather(id);"सक्रिय" थी ... तो कुछ काम करता है ... क्या यह संभव है कि 406 प्रकट होता है और उसी समय में हाइबरनेट एसक्यूएल काम करता है?
जानूस

कृपया यह प्रयास करें कि यह काम करे। इस एनोटेशन को कंट्रोलर @RequestMapping (विधि = RequestMethod.GET, हेडर = {"Accept = text / xml, application / json") पर जोड़ें
sats
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.