2013-05-21 11 views
9

से संदर्भित किया गया है जो मैं करने का प्रयास कर रहा हूं वह एक वेब सर्वर पर एक तस्वीर भेजना है। जब मैं अपने एंड्रॉइड प्रोजेक्ट में एक विधि कॉल करता हूं तो मुझे निम्न त्रुटि मिलती है: क्लास 'org.apache.http.entity.mime.content.Filebody' नहीं मिला, विधि com.example.tc.Send.send से संदर्भित।कक्षा 'org.apache.http.entity.mime.content.Filebody' नहीं मिला, विधि

यह तब होता है eventhough मैं निम्नलिखित आयात मिल गया है:

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.entity.mime.MultipartEntity; 
import org.apache.http.entity.mime.content.FileBody; 
import org.apache.http.impl.client.DefaultHttpClient; 

इस वर्ग की तरह है, जिसमें विधि निहित है दिखता है:

public class Send { 
public Send(){ 
} 

public static String send(String path) throws Exception { 
    String filePath = path; 
    String svar; 

    HttpClient httpclient = new DefaultHttpClient(); 
    try { 
     HttpPost httppost = new HttpPost("path to web server"); 
     FileBody pic = new FileBody(new File(filePath)); 
     MultipartEntity requestEntity = new MultipartEntity(); 
     requestEntity.addPart("file", pic); 

     httppost.setEntity(requestEntity); 
     System.out.println("executing request " + httppost.getRequestLine()); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity responseEntity = response.getEntity(); 
     System.out.println("----------------------------------------"); 
     System.out.println(response.getStatusLine()); 

     ByteArrayOutputStream outstream = new ByteArrayOutputStream(); 
     response.getEntity().writeTo(outstream); 
     byte [] responseBody = outstream.toByteArray(); 
     svar = new String(responseBody); 
     System.out.println(svar); 

    } finally { 
     try { 
      httpclient.getConnectionManager().shutdown(); 
     } 
     catch (Exception ignore) { 
     } 
    } 
    return svar; 
} 
} 

किसी को भी देख सकते हैं कि समस्या क्या है?

+0

आप जावा का निर्माण पथ में शामिल करने के लिए सुनिश्चित करें क्या करें? –

+0

क्या आपको कोई जवाब मिला? –

+0

क्या आप प्रोगार्ड का उपयोग कर रहे हैं? –

उत्तर

4

आपको अपने क्लासपाथ में httpmime-4.0.jar होना चाहिए। आप (मुझे लगता है कि आप करते हैं) इस परियोजना को अपने प्रोजेक्ट में रखते हैं, लेकिन क्या यह रनटाइम के दौरान आपके एप्लिकेशन के अंदर है? अगर मैं इसे सही ढंग से समझता हूं तो आप इसे एंड्रॉइड एप्लिकेशन से प्राप्त करते हैं। आपको अपने एंड्रॉइड के क्लासपाथ में इस जार की आवश्यकता है।

+0

बक्षीस दिया गया ... –

+0

आपको इसे सही उत्तर के रूप में चिह्नित करना चाहिए – whyoz

0

इस लिंक से Apache HttpComponents jar फ़ाइल डाउनलोड करें http://hc.apache.org/downloads.cgi और अपनी एंड्रॉइड प्रोजेक्ट निर्देशिका में एक/libs निर्देशिका बनाएं और उस निर्देशिका में JAR फ़ाइल कॉपी करें। अपने एंड्रॉइड प्रोजेक्ट के लिए प्रोजेक्ट गुणों पर क्लिक करके इसे अपने प्रोजेक्ट में जोड़ें और फिर जावा बिल्ड पथ सेटिंग्स का चयन करें, लाइब्रेरी टैब का चयन करें और JAR बटन जोड़ें पर क्लिक करें और/libs निर्देशिका के भीतर जार चुनें।

0

भी कर सकते हैं उन्हें अलग से डाउनलोड करने के लिए बिना ग्रहण एडीटी बंडल से इन फ़ाइलों को मिलता है - जवाब यहाँ देखें:

https://stackoverflow.com/a/27906193/334402

ध्यान दें कि आप त्रुटि मूल पोस्टर में चिह्नित किये मिलेगा, यानी ' क्लास 'org.apache.http.entity.mime.content.Filebody' नहीं मिला, अगर आप अपने निर्माण पथ में बाहरी जेएआर फाइलें जोड़ते हैं लेकिन संग्रह को अपने प्रोजेक्ट में भी आयात करना भूल जाते हैं।

3

इन दो निर्भरता

compile "org.apache.httpcomponents:httpcore:4.2.4" 
compile "org.apache.httpcomponents:httpmime:4.3" 
संबंधित मुद्दे