2013-05-21 28 views
9

Co próbuję zrobić, to wysłać zdjęcie do serwera WWW. Gdy wywołuję metodę w moim projekcie Android, pojawia się następujący błąd: nie można znaleźć klasy "org.apache.http.entity.mime.content.Filebody", odwołując się do metody com.example.tc.Send.send.Nie można znaleźć klasy "org.apache.http.entity.mime.content.Filebody", do której odwołuje się metoda

Dzieje się tak mimo iż mam następujące Import:

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; 

To właśnie klasa wygląda w których metoda polega:

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; 
} 
} 

Czy ktoś może zobaczyć na czym polega problem?

+0

Czy upewnij się, aby umieścić go w ścieżce budowania Java? –

+0

znalazłeś odpowiedź? –

+0

Czy używasz programu proguard? –

Odpowiedz

4

Musisz mieć httpsime-4.0.jar w swojej ścieżce klas. Możesz (jak sądzę) umieścić ten słoik w projekcie, ale czy jest on wewnątrz aplikacji podczas pracy? Jeśli rozumiem to poprawnie, otrzymujesz to z aplikacji na Androida. Musisz mieć ten słoik w ścieżce klas swojego Androida.

+0

nagroda przyznana ... –

+0

należy oznaczyć jako poprawną odpowiedź – whyoz

0

Pobierz plik jar Apache HttpComponents z tego linku http://hc.apache.org/downloads.cgi i utwórz katalog/libs w katalogu projektu Android i skopiuj plik JAR do tego katalogu. dodaj go do swojego projektu, klikając Właściwości projektu dla projektu Android, a następnie wybierz ustawienia ścieżki Java Build, wybierz kartę Biblioteki i kliknij przycisk Dodaj JAR i wybierz jar w katalogu/libs.

0

Można również uzyskać te pliki z ADT wiązki Eclipse bez konieczności pobierania ich osobno - patrz odpowiedź tutaj:

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

uwaga, że ​​dostaniesz błąd oryginalny plakat oflagowany, czyli ' Nie można znaleźć klasy "org.apache.http.entity.mime.content.Filebody", jeśli dodasz zewnętrzne pliki JAR do swojej ścieżki budowania, ale zapomnij również zaimportować archiwum do swojego projektu.

3

dodać te dwa zależność

compile "org.apache.httpcomponents:httpcore:4.2.4" 
compile "org.apache.httpcomponents:httpmime:4.3" 
Powiązane problemy