2011-04-30 11 views
6

में अनुरोध निकाय के रूप में जेएसओएन डेटा जमा करने के लिए कैसे मैं आरईएसटी वेब सेवाओं को बनाने और एक फॉर्म जमा करने की कोशिश कर अपाचे-सीएक्सएफ का उपयोग कर रहा हूं।अपाचे सीएक्सएफ जैक्स-आरएस (आरईएसटी)

सर्वर:
यह मेरी विधि है, जो जेसन डेटा प्राप्त करने की उम्मीद है।

@POST 
@Path("/addCustomer/") 
@Consumes(MediaType.APPLICATION_JSON) 

//{"Customer":{"name":"Some Name","id":6}} 

public Customer addCustomer(Customer customer){ 

    logger.debug(customer); 
    return customer; 

} 

ग्राहक: मैं अनुरोध सबमिट करने के फ़ायरफ़ॉक्स बाकी प्लगइन का उपयोग कर रहा: बाकी ग्राहक का उपयोग करना, मैं अनुरोध निकाय के रूप में निम्नलिखित json पोस्ट किया है:

{"Customer":{"name":"Arnav Awasthi","id":6}} 

लेकिन मैं "415: Unsupported Media Type" हो रही है।

+0

यह अनुरोध शरीर में एक रूट नाम होना आवश्यक है, मैं मुझे नहीं रूट प्राप्त तुम्हारा के रूप में एक ही सेवा की आवश्यकता है लेकिन, मेरे अनुरोध जेसन स्ट्रिंग में नाम। – vashishth

उत्तर

2

आपको सामग्री-प्रकार को एप्लिकेशन/जेसन पर सेट करने के लिए फ़ायरफ़ॉक्स बताने का एक तरीका ढूंढना होगा। त्रुटि इंगित करती है कि यह कुछ और भेज रहा है।

3

अग्नि फॉक्स के लिए एक प्लगइन, आराम से उपयोग करें और http शीर्षलेख स्वीकार करें: एप्लिकेशन/जेसन, सामग्री-प्रकार: एप्लिकेशन/जेसन।

2

देर से उत्तर के लिए खेद है, लेकिन यह दूसरों के लिए सेवा कर सकता है।

आपको अपने ग्राहक वर्ग की तुलना में डबल चेक करना चाहिए JAXB के @XmlRootElement के साथ एनोटेटेड है, क्योंकि जैक्सन को JSON संदेश को deserialize करने की आवश्यकता है।

1

मुझे कुछ समय पहले एक ही त्रुटि थी। ऐसा लगता है कि मूल कारण अपवाद था "अनुरोध वर्ग के लिए कोई संदेश बॉडी रीडर नहीं मिला है"।

http://www.javatips.net/blog/2012/02/cxf-restful-tutorial के अनुसार मैंने इस समस्या को हल करने के लिए जेटिसन लाइब्रेरी को जोड़ा।

+0

जोड़ा गया जेटिसन, इस मुद्दे को हल नहीं किया –

0

आप ग्राहक डेटा आप किस तरह वापस भेज रहे हैं सूचित करने के लिए कस्टम हेडर जोड़ने के लिए जैसे: हैडर नाम: सामग्री प्रकार हैडर-मान: आवेदन/json

1

मैं एक ही मुद्दे का सामना करना पड़ा का उपयोग कर जैक्सन 2.XX के साथ सीएक्सएफ 2.7.4। लेकिन जब मैं सीएक्सएफ 2.7.7 में अपग्रेड किया गया तो यह तय किया गया था। या सीएक्सएफ 2.7.4 के साथ जैक्सन 1.9.एक्स का उपयोग करें।

0

मुझे एक ही समस्या थी। समाधान जेसन स्ट्रिंग से बीन क्लास नाम को हटाना था। अपने मामले, Json जो के रूप में शरीर होगा भेजा जाना चाहिए में,

{"name":"Arnav Awasthi","id":6} 
संबंधित मुद्दे