Sending a POST request with JSON from Android to a node.js server -


इसलिए मैं JSON को मेरे node.js एक एंड्रॉइड ऐप से पोस्ट अनुरोध के माध्यम से सर्वर सर्वर हेरोकू पर होस्ट किया गया है मुझे पूरा यकीन है कि सर्वर ठीक से काम कर रहा है क्योंकि जब मैं कर्ल अनुरोध जारी करता हूं, तो सब ठीक से काम करता है मुझे लगता है कि इस त्रुटि के साथ कुछ है कि मैं कैसे JSON बॉडी को फ्रंट-एंड में स्वरूपित कर रहा हूं और बैक-एंड कुछ अलग की अपेक्षा करता हूं।

यह मेरा एंड्रॉइड कोड है जो निवेदन। यह एक AsyncTask में है:

  HttpURLConnection urlConn = null; स्ट्रिंग परिणाम = "-1"; JSONObject json = jsonParam [0]; लॉग डी। ("पोस्टटस्क: जेओ", जेसन.ओस्टस्ट्रिंग ()); {URL url; डेटाओटपुटस्ट्रीम प्रिंटआउट; स्ट्रिंग पता = BASE_URL + "/ उपयोगकर्ता / जोड़ें"; Log.d ( "sendPost", पते); Url = नया URL (पता); UrlConn = (HttpURL कनेक्शन) url.openConnection (); UrlConn.setDoInput (सत्य); UrlConn.setDoOutput (सच); UrlConn.setUseCaches (गलत); urlConn.setRequestMethod ( "पोस्ट"); urlConn.setChunkedStreamingMode (100); urlConn.setRequestProperty ( "सामग्री प्रकार", "आवेदन / json"); urlConn.connect (); // पोस्ट आउटपुट भेजें। प्रिंटआउट = नया डेटाओटपुटस्ट्रीम (urlConn.getOutputStream ()); स्ट्रिंग आउटपुट = URLEncoder.encode (json.toString (), "UTF-8"); Log.d ( "postTaskURL", उत्पादन); printout.writeUTF (json.toString ()); printout.flush (); परिणाम = पूर्णांक.स्टोस्टिंग (urlConn.getResponseCode ()); printout.close (); } पकड़ (IOException ई) {e.printStackTrace (); } अंत में {if (urlConn! = Null) urlConn.disconnect (); } वापसी परिणाम;  

यहां AsyncTask को कॉल है:

  पोस्टटस्क कार्य = नया पोस्टटैस्क (); JSONObject json = नया JSONObject (); json.put ( "उपयोगकर्ता नाम", "उपयोगकर्ता"); json.put ( "पासवर्ड", "जीवन"); task.execute (JSON);  

और यहां मेरा नोड। जेएस बैकेंड है:

  एप। पोस्ट ('/ उपयोगकर्ता / जोड़ें', फ़ंक्शन (रिक, रिज़) {console.log) ("इस फ़ंक्शन को बनाया गया था"); var उपयोगकर्ता = रीक.बी.युजर; var पासवर्ड = रीक। पासवर्ड। कंसोल। लॉग ("उपयोगकर्ता:" + उपयोगकर्ता + "\ n पासवर्ड:" + पासवर्ड); var आरसी = मॉडल.एड (यूजर, पासवर्ड, फ़ंक्शन (रिटर्न कोड) {console.log ("रिटर्न कोड:" + वापसी कोड .स्टस्ट्रिंग ()); भेजना JSON (रिज़र्व, रिटर्न कोड);}); अगर (आर सी! = अपरिभाषित & amp; आर सी! = नल) {sendJSON (रेस, आरसी);}});  

मेरे एंड्रॉइड ऐप पर लौटने का परिणाम 400 त्रुटि कोड है - खराब अनुरोध। और जब मैं पोस्ट अनुरोध को आरंभ करता हूं, तो हराकोक के लॉग को देखते हुए निम्नलिखित है:

  त्रुटि: अमान्य json 2014-02-18T06: 13: 25.468224 + 00: 00 एप [वेब .1]: पर Object.exports.error (/app/node_modules/express/node_modules/connect/lib/utils.js:60:13) 2014-02-18T06: 13: 25.468224 + 00: 00 एप [वेब .1]: इनकमिंग मेसेज में & LT; गुमनाम & gt; (/app/node_modules/express/node_modules/connect/lib/middleware/json.js:74:71) 2014-02-18T06: 13: 25.468224 + 00: 00 एप [वेब 1]: इनकमिंग मेसेज पर। एन्टर एमिटर.मेट (Events.js: 92: 17) 2014-02-18T06: 13: 25.468224 + 00: 00 एप [वेब .1]: प्रोसेस पर ._किलकॉलबैक (नोड। जेएस: 415: 13) 2014-02-18T06: 13: 25.468224 + 00: 00 एप [वेब .1]: _stream_readable.js पर: 920: 16 2014-02-18T06: 13: 25.499015 + 00: 00 हेरोको [राउटर]: पर = जानकारी विधि = पोस्ट पथ = / उपयोगकर्ता / जोड़ें Host = ancient-spire-1285.herokuapp.com request_id = 5d148ef8-a74b-4cd5-ae8b-67f0214ee641 fwd = "76.102.205.187" dyno = web.1 कनेक्ट = 1ms सेवा = 310ms स्थिति = 400 बाइट्स = 521  

अगर कोई इस पर कोई विचार है कि मुझे यह त्रुटि क्यों मिल रही है, तो इसकी बहुत सराहना होगी मैं इस दिन को डिबग करने की कोशिश कर रहा हूँ और मुझे कहीं नहीं मिल रहा है।

धन्यवाद।

उस लिंक पर यही जवाब मेरे लिए चाल थी असल में, JSON वस्तु लेते हुए और बाइट प्रतिनिधित्व प्राप्त करने के लिए काम किया।

  बाइट [] outputBytes = "{'value': 7.5}"। मिलवेट्स ("UTF-8"); आउटपुटस्ट्रीम ओएस = httpcon.getOutputStream (); os.write (outputBytes); os.close ();  

Comments

Popular posts from this blog

ios - How do I use CFArrayRef in Swift? -

eclipse plugin - Run java code error: Workspace is closed -

c - Error on building source code in VC 6 -