"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Android में वॉली के साथ वर्किंग पोस्ट मल्टीपार्ट अनुरोध कैसे करें?

Android में वॉली के साथ वर्किंग पोस्ट मल्टीपार्ट अनुरोध कैसे करें?

2025-02-06 पर पोस्ट किया गया
ब्राउज़ करें:102

एक सामान्य कार्य। जबकि httpentity अब नए API संस्करणों में उपलब्ध नहीं है, वॉली का उपयोग करके मल्टीपार्ट अनुरोधों को प्राप्त करने के अभी भी तरीके हैं। How to Make Working POST Multipart Requests with Volley in Android?

, हम वॉली के अनुरोध वर्ग का विस्तार कर सकते हैं जैसे: आयात com.android.volley.authfailureerror; आयात com.android.volley.networkresponse; आयात com.android.volley.parseerror; आयात com.android.volley.request; आयात com.android.volley.response; आयात com.android.volley.volleyerror; आयात com.android.volley.toolbox.httpheaderParser; आयात java.util.map; क्लास मल्टीपर्टरेस्ट ने अनुरोध किया है { // अनुरोध प्रतिक्रिया के लिए श्रोता निजी अंतिम प्रतिक्रिया। Listener Mlistener; // अनुरोध त्रुटि के लिए श्रोता निजी अंतिम प्रतिक्रिया। // अनुरोध हेडर निजी अंतिम नक्शा mheaders; // मल्टीपार्ट माइम प्रकार (जैसे, "मल्टीपार्ट/फॉर्म-डेटा; सीमा = xxx") निजी अंतिम स्ट्रिंग mmimetype; // मल्टीपार्ट के रूप में शरीर का अनुरोध करें निजी अंतिम बाइट [] mmultipartbody; // कंस्ट्रक्टर public multionartrequest (स्ट्रिंग URL, मैप हेडर, स्ट्रिंग mimetype, बाइट [] मल्टीपार्टबॉडी, Response.Listener श्रोता, response.errorlistener errorListener) { सुपर (Method.Post, URL, ERRORLISTENER); this.mlistener = श्रोता; this.merrorlistener = errorListener; this.mheaders = हेडर; this.mmimetype = mimetype; this.mmultipartbody = multivartbody; } // गेटर्स और सेटर्स // ओवरराइड getheaders () यदि आपको कस्टम हेडर जोड़ने की आवश्यकता है @Override सार्वजनिक नक्शा गेथेडर्स () थ्रो ऑफ़फेल्योररर { वापसी (mheaders! = null)? mheaders: super.getheaders (); } // ओवरराइड getBodyContentType () मल्टीपार्ट अनुरोध के लिए सही MIME प्रकार सेट करने के लिए @Override सार्वजनिक स्ट्रिंग getBodyContentType () { मिमीमेटाइप लौटें; } // ओवरराइड गेटबॉडी () को मल्टीपार्ट बॉडी को वापस करने के लिए @Override सार्वजनिक बाइट [] getBody () थ्रो ऑफ़फेल्योररर { Mmultipartbody लौटें; } // ओवरराइड parsenetworkResponse () एक नेटवर्क के रूप में प्रतिक्रिया को पार्स करने के लिए @Override संरक्षित प्रतिक्रिया ParsenetWorkResponse (NetworkResponse प्रतिक्रिया) { कोशिश { वापसी प्रतिक्रिया। success ( प्रतिक्रिया, Httpheaderparser.parsecacheaheaders (प्रतिक्रिया)); } पकड़ (अपवाद ई) { वापसी प्रतिक्रिया। } } // प्रतिक्रिया और त्रुटि प्रदान करना @Override संरक्षित शून्य deliverResponse (networkresponse प्रतिक्रिया) { Mlistener.onResponse (प्रतिक्रिया); } @Override पब्लिक शून्य डिलीवरर (वॉलीरोर एरर) { merrorlistener.onerrorresponse (त्रुटि); } … 0]; BytearrayoutputStream Bos = नया BytearRayOutputStream (); DataOutputStream DOS = नया DataOutputStream (BOS); कोशिश { // पाठ डेटा BuildTextPart (डॉस, "नाम", "जॉन डो"); BuildTextPart (डॉस, "ईमेल", "[email protected]"); // छवि डेटा BitMap ImageBitMap = BitMapFactory.Decoderesource (संदर्भ.गेट्रसोर्स (), r.drawable.my_image); बिल्डिमेजपार्ट (डॉस, "इमेज", इमेजबिटमैप); } पकड़ (ioException e) { e.PrintStackTrace (); } multipartbody = bos.tobytearray (); :

"my_url", null, // हेडर "मल्टीपार्ट/फॉर्म-डेटा", मल्टीपार्टबॉडी, नई प्रतिक्रिया। Listener () { @Override सार्वजनिक शून्य onResponse (networkresponse प्रतिक्रिया) { // संभाल प्रतिक्रिया } }, नई प्रतिक्रिया। errorlistener () { @Override सार्वजनिक शून्य onerrorresponse (वॉलीरर त्रुटि) { // संभाल त्रुटि } }); void buildTextPart (DataOutputStream DataOutputStream, String Name, String value) IOException {फेंकता है { DataOutputStream.WriteBytes (दोहाइफेंस बाउंड्री लाइनेंड); DataOutputStream.WriteBytes ("सामग्री-डिस्कोज़िशन: फॉर्म-डेटा; नाम = \" "नाम" नाम "\" "लाइनेंड); DataOutputStream.WriteBytes (लाइनेंड); DataOutputStream.WriteBytes (मान); DataOutputStream.WriteBytes (लाइनेंड); … एक volleymultipartrequest वर्ग का कार्यान्वयन:

आयात com.android.volley.authfailureerror; आयात com.android.volley.networkresponse; आयात com.android.volley.parseerror; आयात com.android.volley.request; आयात com.android.volley.response; आयात com.android.volley.volleyerror; आयात com.android.volley.toolbox.httpheaderParser; आयात java.io.bytearrayoutputStream; आयात java.io.dataoutputStream; आयात java.io.ioException; आयात java.util.hashmap; आयात java.util.map; सार्वजनिक वर्ग volleymultipartrequest विस्तारित अनुरोध { निजी अंतिम प्रतिक्रिया। Listener Mlistener; निजी अंतिम प्रतिक्रिया। निजी अंतिम नक्शा mheaders; निजी अंतिम स्ट्रिंग mmimetype; निजी अंतिम बाइट [] mmultipartbody; सार्वजनिक volleymultipartrequest (int विधि, स्ट्रिंग URL, response.Listener श्रोता, Response.errorlistener errorListener) { सुपर (विधि, URL, ERRORLISTENER); this.mlistener = श्रोता; this.merrorlistener = errorListener; this.mheaders = null; this.mmimetype = null; this.mmultipartbody = null; } सार्वजनिक volleymultipartrequest (स्ट्रिंग URL, मैप हेडर, स्ट्रिंग mimetype, बाइट [] मल्टीपार्टबॉडी, Response.Listener श्रोता, response.errorlistener errorListener) { सुपर (Method.Post, URL, ERRORLISTENER); this.mlistener = श्रोता; this.merrorlistener = errorListener; this.mheaders = हेडर; this.mmimetype = mimetype; this.mmultipartbody = multivartbody; } @Override सार्वजनिक नक्शा गेथेडर्स () थ्रो ऑफ़फेल्योररर { वापसी (mheaders! = null)? mheaders: super.getheaders (); } @Override सार्वजनिक स्ट्रिंग getBodyContentType () { मिमीमेटाइप लौटें; } @Override सार्वजनिक बाइट [] getBody () थ्रो ऑफ़फेल्योररर { Mmultipartbody लौटें; } @Override संरक्षित प्रतिक्रिया ParsenetWorkResponse (NetworkResponse प्रतिक्रिया) { कोशिश { वापसी प्रतिक्रिया। success ( प्रतिक्रिया, Httpheaderparser.parsecacheaheaders (प्रतिक्रिया)); } पकड़ (अपवाद ई) { वापसी प्रतिक्रिया। } } @Override संरक्षित शून्य deliverResponse (networkresponse प्रतिक्रिया) { Mlistener.onResponse (प्रतिक्रिया); } @Override पब्लिक शून्य डिलीवरर (वॉलीरोर एरर) { merrorlistener.onerrorresponse (त्रुटि); } सार्वजनिक स्थैतिक मानचित्र createmultipartrequestParts (मानचित्र params, मानचित्र डेटा) { मैप मल्टीपार्टपरम्स = नया हैशमैप (); for (map.entry प्रविष्टि: params.entryset ()) { multicartparams.put (antrice.getkey (), नया DataPart (Antray.getValue ())); } for (map.entry प्रविष्टि: data.entryset ()) { multionartparams.put (antrice.getkey (), antrice.getValue ()); } मल्टीपार्टपरम लौटें; } सार्वजनिक स्थैतिक बाइट [] createmultipartbody (मानचित्र डेटा, स्ट्रिंग सीमा) ioException { BytearrayoutputStream Bos = नया BytearRayOutputStream (); DataOutputStream DOS = नया DataOutputStream (BOS); for (map.entry प्रविष्टि: data.entryset ()) { BuildTextPart (डॉस, एंट्री.गेटकी (), एंट्री.गेटवेल्यू ()। getContentType (), एंट्री.गेटवेल्यू () }

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3