2012-11-02 45 views
6

का उपयोग कर सर्वर पर एंड्रॉइड पोस्ट छवि Django सर्वर पर एक छवि और डेटा अपलोड करने का प्रयास कर रहा हूं। मैंने apache-mime4j.0.6.jar और httpmime4.0.1.jar पुस्तकालयों (परियोजना-> पथ बनाने-> बाहरी जार फ़ाइलों को जोड़ें) और यहां एक छवि अपलोड करने के लिए कोड शामिल है।मल्टीपार्ट एंटीटी

HttpResponse response = null; 
try { 
    HttpPost httppost = new HttpPost("http://10.0.2.2:8000/mobile"); 
    // HttpPost httppost = new HttpPost("some url"); 

    MultipartEntity multipartEntity = new MultipartEntity(); //MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
    multipartEntity.addPart("name", new StringBody("nameText")); 
    multipartEntity.addPart("place", new StringBody("placeText")); 
    multipartEntity.addPart("tag", new StringBody("tagText")); 
    //multipartEntity.addPart("Description", new StringBody(Settings.SHARE.TEXT)); 
    multipartEntity.addPart("Image", new FileBody(destination)); 
    httppost.setEntity(multipartEntity); 

    httpclient.execute(httppost, new PhotoUploadResponseHandler()); 

    } catch (Exception e) { 
    Log.e("Error","error"); 
    } 

त्रुटि संदेश:

Could not find class 'org.apache.http.entity.mime.MultipartEntity' 

और मैं मैन्युअल/libs फ़ोल्डर में libs फ़ोल्डर बनाने और जार फ़ाइलों को मैन्युअल सहित कोशिश की है। जब मैं ऐसा करता हूं यह संकलन करने में विफल रहता है।

त्रुटि:

Conversion to Dalvik format failed with error 1 Unknown Android Packaging Problem 

पुस्तकालयों सहित नए सिरे से आवेदन बनाने की कोशिश की। और मुझे एक ही त्रुटि का सामना करना पड़ा। मैंने सबकुछ संभव कोशिश की है। क्या कोई मुझे बता सकता है कि ऐसा क्यों होता है और इसे कैसे ठीक किया जाए। किसी भी तरह की सहायता का स्वागत किया जाएगा!!

उत्तर

0

मैं httpmime-4.2.1.jar का उपयोग कर एंड्रॉइड से एक Django सर्वर पर एक छवि अपलोड करता हूं। यही एकमात्र पुस्तकालय है जिसे मैंने शामिल किया है और यह ठीक काम करता है। बीटीडब्ल्यू: पुस्तकालयों को एंड्रॉइड परियोजनाओं में libs फ़ोल्डर में होना चाहिए।

यह वह कोड है जिसे मैं अपलोड के लिए उपयोग कर रहा हूं।

private JSONObject uploadImage(String url, File img) throws Exception{ 
    url = addAuthToken(url); 
    HttpPost post = new HttpPost(url); 
    MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
    FileBody fileBody = new FileBody(img, "images/jpeg"); 
    reqEntity.addPart("image", fileBody); 
    post.setEntity(reqEntity); 

    JSONObject ret = baseRequest(post); 
    checkReturnStatus(ret, 201); 

    return ret; 
} 

private JSONObject baseRequest(HttpUriRequest request) throws Exception{ 
    HttpClient client = new DefaultHttpClient(); 
    HttpResponse response = client.execute(request); 
    BufferedReader in = null; 
    try{ 
     in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
     StringBuffer sb = new StringBuffer(); 
     String line = null; 
     String NL = System.getProperty("line.separator"); 
     while ((line = in.readLine()) != null) { 
      sb.append(line + NL); 
     } 

     return new JSONObject(sb.toString()); 
    }finally { 
     if(in != null) in.close(); 
    } 
} 
+0

के साथ एक लिंक है, फिर भी वही त्रुटि है। MultipartEntity नहीं मिला! – Geetanjali

+0

libs फ़ोल्डर में जार लाइब्रेरी है? एपीके में इसे सही ढंग से पैक करने के लिए यह आवश्यक है। आप इसे एक और बार हटा सकते हैं और जोड़ सकते हैं। ग्रह फ़ाइल में सीधे फ़ाइल में एक्सप्लोरर से खींचें।आपको इसे "एंड्रॉइड निर्भरता" के तहत देखना चाहिए, जहां आप इसे खोल सकते हैं और देख सकते हैं कि आवश्यक वर्ग इसमें है या नहीं। – SimonSays

+0

क्या आप एक उदाहरण उदाहरण दे सकते हैं ..? बहुत मददगार होगा – Droidman

1

यदि आप नए प्रयोग कर रहे हैं android-sdk इस प्रयास करें।

  1. libs
  2. के रूप में नामित फ़ोल्डर बनाएँ कि फ़ोल्डर में अपने जार फ़ाइल पेस्ट करें।
  3. और आखिरकार अपनी परियोजना> बिल्ड पथ> बाहरी संग्रह जोड़ें पर राइट क्लिक करें।

यही है। यह मदद कर सकता है। शुभकामनाएं।

+0

हां मैंने वही किया। मैंने इसका उल्लेख किया है – Geetanjali

+0

क्या आपने उल्लेख किए गए चरणों का पालन किया है क्योंकि तब आपको कक्षा को त्रुटि नहीं मिलनी चाहिए। अगर आपने जिस तरीके से काम किया है, उसका उपयोग करके लाइब्रेरी को जोड़ा है तो यह काम नहीं करेगा। क्योंकि यह नए एसडीके में बदलाव है। आपने पिछले एसडीके के साथ सही किया लेकिन नए के साथ यह काम नहीं करेगा। :) – Akshay

0

मैं आपको spring-android का उपयोग करने का सुझाव देता हूं यह एंड्रॉइड के लिए एक अच्छी आराम एपीआई लाइब्रेरी है और वसंत-एंड्रॉइड के साथ, आप आसानी से फ़ाइल अपलोड कर सकते हैं।

HttpHeaders requestHeaders = .... 
MultiValueMap<String, Object> message = new LinkedMultiValueMap<String, Object>(); 
message.add("qqfile", new FileSystemResource(filePath)); //attach file 

HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(
      message, requestHeaders); 
RestTemplate restTemplate = RestUtil.getRestTemplate(context); 
ResponseEntity<YourResultDTO> response = restTemplate.exchange(url, HttpMethod.POST, requestEntity,YourResultDTO.class); 

यह का उपयोग करें और गूगल से पता चलता है के रूप में जिंजरब्रेड पर पूर्व जिंजरब्रेड और java.net.urlconnection और उच्च API स्तर पर अपाचे HTTP ग्राहक का उपयोग करना बहुत आसान है।

+0

RestUtil क्या है? 9 डाउनलोड किए गए पैकेज आयात किए जाने के बाद भी इसे हल नहीं किया जा सकता .. और आपकाResultDTO क्या है? – Droidman

+0

आपको अपने खुद के डीटीओ कक्षा में YourResultDTO को प्रतिस्थापित करना चाहिए। यह परिणाम ऑब्जेक्ट होगा जो सर्वर से परिणाम रखता है और यदि आप वसंत-एंड्रॉइड को सही तरीके से सेट करते हैं, तो वसंत-एंड्रॉइड पार्सिंग जेसन/एक्सएमएल परिणाम को संभालेगा। – kingori

0

मैं एक ही समस्या थी और मैं इसे इस तरह से हल: जावा का निर्माण पथ विंडो में, आदेश पर क्लिक करें और निर्यात टैब पुस्तकालय आप तो जोड़ने के लिए ऊपर (अपलोड lib प्रथम माना जाता है) पर क्लिक करें

चाहते हाइलाइट करें

ठीक क्लिक करें और सबकुछ ठीक है।

यहां फोटो (Android Eclipse NoClassDefFoundError for external .jar files)