2013-05-21 16 views
9

Quello che sto cercando di fare è inviare un'immagine a un server web. Quando chiamo un metodo nel mio progetto Android ottengo il seguente errore: impossibile trovare la classe 'org.apache.http.entity.mime.content.Filebody', a cui si fa riferimento dal metodo com.example.tc.Send.send.Impossibile trovare la classe 'org.apache.http.entity.mime.content.Filebody', a cui si fa riferimento dal metodo

Questo accade nonostante sapessero che ho ottenuto le seguenti importazioni:

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; 

Questo è ciò che la classe assomiglia in cui il metodo si trova:

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

chiunque può vedere qual è il problema?

+0

Avete fatto sicuri di includere nel percorso Java costruire? –

+0

hai trovato una risposta? –

+0

Stai usando proguard? –

risposta

4

È necessario avere httpmime-4.0.jar nel classpath. Potresti (credo che tu abbia) questo jar nel tuo progetto, ma è all'interno dell'applicazione durante il runtime? Se ho capito bene si ottiene questo dall'applicazione Android. Devi avere questo barattolo nel classpath del tuo androide.

+0

bounty concesso ... –

+0

dovresti contrassegnarlo come la risposta corretta – whyoz

0

Scaricare il file jar Apache HttpComponents da questo collegamento http://hc.apache.org/downloads.cgi e creare una directory/libs all'interno della directory del progetto Android e copiare il file JAR in quella directory. aggiungilo al tuo progetto facendo clic sulle proprietà del progetto per il tuo progetto Android e quindi seleziona le impostazioni del percorso di costruzione Java, seleziona la scheda Librerie e fai clic sul pulsante Aggiungi JAR e scegli il contenitore all'interno della directory/libs.

0

è anche possibile ottenere questi file dal ADT fascio Eclipse senza dover scaricare separatamente - vedere la risposta qui:

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

Nota che si otterrà l'errore del manifesto originale contrassegnato, vale a dire ' Non è stato possibile trovare la classe 'org.apache.http.entity.mime.content.Filebody', se si aggiungono semplicemente i file JAR esterni al percorso di build, ma si dimentica di importare anche l'archivio nel progetto.

3

aggiungere questi due dipendenza

compile "org.apache.httpcomponents:httpcore:4.2.4" 
compile "org.apache.httpcomponents:httpmime:4.3" 
Problemi correlati