मैं अपाचे एचटीपी कॉम्पोनेंट्स v4.3.3 (मेवेन httpclient और httpmime) का उपयोग कर रहा हूं। मुझे कुछ मेटाडेटा के साथ एक फाइल अपलोड करने की जरूरत है। कर्ल कमांड, जो काम करता है, निम्न जैसा दिखता है।अपाचे HttpComponentst का उपयोग करके मैं मल्टीपार्ट/मिश्रित http अनुरोध कैसे बना और पोस्ट करूं?
कर्ल -k मैं एच "सामग्री प्रकार: बहुखण्डीय/मिश्रित" -X पोस्ट --form 'फ़ील्ड 1 = VAL1' --form 'field2 = val2' --form 'फ़ाइल = @ somefile। ज़िप; प्रकार = एप्लिकेशन/ज़िप 'https://www.some.domain/
मैंने इस कर्ल पद को निम्नलिखित के रूप में नकल करने का प्रयास किया है।
HttpEntity entity = MultiPartEntityBuilder
.create()
.addPart("field1",new StringBody("val1",ContentType.TEXT_PLAIN))
.addPart("field2",new StringBody("val2",ContentType.TEXT_PLAIN))
.addPart("file", new FileBody(new File("somefile.zip"), ContentType.create("application/zip"))
.build();
HttpPost post = new HttpPost("https://www.some.domain");
post.addHeader("Content-Type", "multipart/mixed");
हालांकि, के बाद मैं HttpClient का उपयोग HttpPost निष्पादित करने के लिए, मैं निम्नलिखित अपवाद (सर्वर कोड भी है जावा घाट पर चल रहा है) मिलता है।
org.apache.commons.fileupload.FileUploadException: अनुरोध को अस्वीकार कर दिया गया था क्योंकि बहुखण्डीय सीमा
मिला था जब मैं कर्ल करने के लिए
कर्ल निशान जोड़ने - ट्रेस - -के -आई-एच "सामग्री-प्रकार: मल्टीपार्ट/मिश्रित" -एक्स पोस्ट --form 'field1 = val1' --form 'field2 = val2' --form '[email protected]; type = application/ज़िप 'https://www.some.domain/
मुझे लगता है कि फॉर्म फ़ील्ड/मान जोड़े HTTP शीर्षलेख के रूप में सेट हैं।
सामग्री-विस्थापन: फॉर्म-डेटा; नाम = फ़ील्ड 1 ... मूल्य 1
मैं यहां क्या गलत कर रहा हूं पर कोई विचार है? किसी भी मदद की सराहना की है।
पता नहीं क्यों आपको कोई वोट नहीं मिला - यह एंड्रॉइड पर मल्टीपार्ट का समाधान है! मुझे मिली अन्य चीजें इसे मैन्युअल रूप से करती हैं जो काफी बोझिल है .... – Lonzak
लेकिन यह मल्टीपार्ट/मिश्रित नहीं है। मल्टीपार्ट/फॉर्म-डेटा के साथ ऐसा करने के लिए सैकड़ों उत्तर होने लगते हैं। – unwichtich