2013-05-06 14 views
13

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

लेकिन इस परियोजना के लिए मुझे एक आराम एपीआई उपभोग करने के लिए एक पोस्ट कॉल भेजने के लिए स्प्रिंग रेस्ट टेम्पलेट का उपयोग करना होगा।

मैं इस कोड का उपयोग कर रहा:

String restCall = restTemplate.postForObject(url+restParm, null, String.class); 

यह ठीक काम कर रहा है।

मैं HTTP स्थिति कोड (E.g: 200 OK।) को पुनः प्राप्त करना चाहता हूं। ऐसा कैसे किया जा सकता था ? धन्यवाद।

+0

@ सॉटिरियोस डेलिमैनोलिस। ठीक है, तो मुझे क्या उपयोग करना चाहिए? – Zamboo

+0

मैंने पोस्ट किए गए लिंक को जांचें, अपाचे HTTP घटक। यह एक उदाहरण दिखाता है: http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/HttpClient.html आप कुछ खो देते हैं, आप कुछ प्राप्त करते हैं। –

+0

या इसके बजाय, इस http://stackoverflow.com/questions/3322381/spring-resttemplate-behavior-when-handling-responses-with-a-status-of-no-content पर एक नज़र डालें। अपने स्वयं के 'ResponseExtractor' को कार्यान्वित करें और 'restTemplate.execute (...) ' –

उत्तर

35

आप इस प्रकार postForEntity विधि का उपयोग करें ...

ResponseEntity<String> response = restTemplate.postForEntity(url+restParm, null, String.class); 
HttpStatus status = response.getStatusCode(); 
String restCall = response.getBody(); 
+0

अगर मैं उन्हें एक त्रुटि में चाहता हूं तो मैं हेडर कैसे प्राप्त करूं? – simonides

+0

क्या होगा अगर मुझे प्रतिक्रिया वर्ग नहीं पता? – Normal

+0

प्रतिक्रिया हमेशा मेरे स्ट्रिंग के रूप में उपलब्ध होगी, जैसा कि मेरे उदाहरण में है। यदि प्रतिक्रिया किसी प्रारूप में है जो किसी ऑब्जेक्ट से जुड़ी हो सकती है, जैसे कि जेसन या एक्सएमएल, तो आप निर्दिष्ट कर सकते हैं कि प्रतिक्रिया प्रकार और वसंत इसे आपके लिए कक्षा में बांध देगा। बाध्यकारी के बारे में अधिक जानकारी के लिए वसंत दस्तावेज देखें। – hyness

3

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

तुम बस postForEntity विधि है जो एक

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/http/ResponseEntity.html

रिटर्न और जैसा कि प्रलेखन पता चलता है, प्रतिक्रिया इकाई का दर्जा प्राप्त है का उपयोग करें।

1

मैं वसंत RestTemplate का उपयोग कर के अपने अनुभव को साझा करना चाहते हैं। यह वास्तव में मुझे
इसे ठीक करने के लिए बहुत समय लगा। मेरी आवश्यकता: 1) HTTPURI में सेट पैरामीटर के साथ serverURI को POST भेजें। पैरामीटर को फॉर्म डेटा के रूप में लपेटा जाना चाहिए। 2)। प्रतिक्रिया शरीर में जेएसओएन डेटा के साथ प्रतिक्रिया प्राप्त करें और अनुकूलित कक्षा का नाम बाकी टेम्पलेट को पास कर दिया गया है। परिणाम: प्रतिक्रिया में अलवासी को पूरा शरीर मिला।

मैंने वेबसाइट पर खोज की और हर सुझाव थक गया। शरीर अभी भी खाली है। तो मैंने वसंत को बताने की कोशिश की कि मेरे कस्टमाइज्ड क्लास के बदले मुझे स्ट्रिंग लौटाएं। मैंने देखा कि JSON स्ट्रिंग वापस आ गई है। इसलिए प्रतिक्रिया शरीर शून्य है क्योंकि वसंत जेएसओएन को मेरे अनुकूलित वर्ग में पार्स नहीं कर सकता है।

अंत में, मैंने अपनी अनुकूलित श्रेणी परिभाषा में @ जेसनप्रोपर्टी एनोटेशन जोड़कर न्यूल बॉडी इश्यू को ठीक किया। (मैंने पहले मेरी अनुकूलित कक्षा में @SerializedName का उपयोग किया था और वसंत मेरे ऑब्जेक्ट पर जेएसओएन पार्स नहीं कर सकता)

+0

हाय सेरेना, स्टैक ओवरफ्लो में आपका स्वागत है। यह समुदाय प्रश्नों और उत्तरों पर केंद्रित है।दुर्भाग्यवश, आपकी पोस्ट इस प्रश्न का उत्तर नहीं देती है। यह समुदाय आपको कैसे काम करता है इस बारे में विवरण समझने के लिए मैं आपको [दौरा लेना] (http://stackoverflow.com/tour) आमंत्रित करता हूं। साथ ही, अगर आपको लगता है कि आपके पास एक मूल्यवान अनुभव है, तो आप हमेशा एक नया प्रश्न पूछ सकते हैं और इसे स्वयं जवाब दे सकते हैं। इसके साथ कुछ भी गलत नहीं है, वास्तव में [इसे प्रोत्साहित किया जाता है] (http://stackoverflow.com/help/self-answer)! आपका समय अच्छा गुजरे! :) – Sam

संबंधित मुद्दे