Les problèmes, y compris Apache HttpComponents dans Android Gradle projet
J'essaie d'inclure httpmime dans mon application en utilisant le construire.gradle fichier, et tout compile bien. Au lieu de cela, lorsque l'application tente d'utiliser effectivement le MultipartEntityBuilder classe, il y a un tas d'AVERTIR les messages de niveau sur le journal en disant qu'il y a des problèmes.
Voici l'extrait de mon build.gradle pour la dépendance:
compiler('org.apache.httpcomponents:httpmime:4.+') { exclure le module: "httpclient" }
Voici les erreurs:
10-09 13:39:37.367 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de résoudre champ statique 6967 (DEFAULT_BINARY) dans Lorg/apache/http/entité/ContentType; 10-09 13:39:37.367 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de trouver la classe référencée dans la signature (Lorg/apache/http/entité/ContentType;) 10-09 13:39:37.367 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de trouver la classe référencée dans la signature (Lorg/apache/http/entité/ContentType;) 10-09 13:39:37.367 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de résoudre champ statique 6967 (DEFAULT_BINARY) dans Lorg/apache/http/entité/ContentType; 10-09 13:39:37.367 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de trouver la classe référencée dans la signature (Lorg/apache/http/entité/ContentType;) 10-09 13:39:37.367 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de trouver la classe référencée dans la signature (Lorg/apache/http/entité/ContentType;) 10-09 13:39:37.367 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de résoudre champ statique 6967 (DEFAULT_BINARY) dans Lorg/apache/http/entité/ContentType; 10-09 13:39:37.367 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de trouver la classe référencée dans la signature (Lorg/apache/http/entité/ContentType;) 10-09 13:39:37.367 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de trouver la classe référencée dans la signature (Lorg/apache/http/entité/ContentType;) 10-09 13:39:37.377 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de résoudre méthode statique 19478: Lorg/apache/http/util/Args;.notNull (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; 10-09 13:39:37.377 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de résoudre champ statique 6968 (DEFAULT_TEXT) dans Lorg/apache/http/entité/ContentType; 10-09 13:39:37.377 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de trouver la classe référencée dans la signature (Lorg/apache/http/entité/ContentType;) 10-09 13:39:37.377 2409-2426/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de trouver la classe référencée dans la signature (Lorg/apache/http/entité/ContentType;)
La classe java:
import android.util.Journal; importer java.io.IOException; importer java.io.InputStream; importer java.io.OutputStream; importer java.net.HttpURLConnection; importer java.net.URL; import org.apache.http.HttpEntity; import org.apache.http.de l'entité.le mime.MultipartEntityBuilder; public class FileUploader { private final static String LIMITE = "__--__--__SERVETHEOVERMIND-__-_"; public void uploadFile(String targetUrl, MultipartEntityBuilder télécharger, UploadHandler après) { Journal.v("FileUploader", "Téléchargement" + targetUrl); HttpURLConnection con = null; OutputStream os = null; InputStream is = null; try { HttpEntity uploadEntity = télécharger.build(); URL postTo = new URL(targetUrl); con = (HttpURLConnection) postTo.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + LIMITE); con.setDoOutput(true); con.setDoInput(true); con.setUseCaches(false); con.addRequestProperty("Connexion", "Keep-Alive"); con.setRequestProperty("Content-length", String.valueOf(uploadEntity.getContentLength())); os = con.getOutputStream(); uploadEntity.writeTo(os); os.close(); con.connect(); est = con.getInputStream(); après.consumeUploadResponse(est); con.disconnect(); } catch (IOException e) { e.printStackTrace(); } si(con != null) { con.disconnect(); } si(système d'exploitation != null) { try { os.close(); } catch (IOException e) { Journal.v("Uploader", "Fermé flux de sortie"); } } if (! = null) { try { est.close(); } catch (IOException e) { Journal.v("Uploader", "Fermé flux d'entrée"); } } } public interface UploadHandler { public void consumeUploadResponse(InputStream stream); } }
[MODIFIER] l'exactitude des Dépendances, comme par réponse
compiler('org.apache.httpcomponents:httpmime:4.+') { exclure le module: "httpclient" } compiler('org.apache.httpcomponents:httpcore:4.+') { exclure le module: "httpclient" }
[DEUXIÈME ÉDITION] Encore des questions - il est maintenant de ces autres bits manquants, mais il pourrait y avoir des problèmes sur le backend:
10-10 11:51:54.998 29597-29638/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de résoudre champ statique 7465 (EXEMPLE) dans Lorg/apache/http/message/BasicHeaderValueParser; 10-10 11:51:54.998 29597-29638/com.de l'entreprise.app W/dalvikvm﹕ VFY: impossible de résoudre champ statique 7459 (EXEMPLE) dans Lorg/apache/http/message/BasicHeaderValueFormatter;
[ENCORE UN AUTRE EDIT]
Il semble que le dernier peu de bits manquants n'ont pas d'effet sur la réussite de l'utilisation de la MultipartEntityBuilder dans ce cas.
votre premier bloc de code ci-dessus fixe l'avertissement que je recevais à android studio. Merci!
OriginalL'auteur A. Rager | 2013-10-09
Vous devez vous connecter pour publier un commentaire.
Vous devez ajouter httpcore-4.3.jar pour votre java build path. J'ai eu le même problème et il a disparu après l'ajout de ce bocal.
On dirait qu'il fonctionne probablement, malgré les derniers messages d'erreur - maintenant, je suis à la recherche des questions sur les rails backend
Si vous êtes nouveau à Android Studio et maintenant sûr de savoir comment ajouter le pot de votre chemin de génération, voir cette réponse à une question similaire: stackoverflow.com/a/28712564 - vous avez juste besoin de chercher à partir de
httpcore
au lieu dehttpmime
.OriginalL'auteur Gary Kipnis
C'est la façon dont je l'ai fait dans mon gradle..
Et à l'intérieur de android
OriginalL'auteur Jonatan
Vous pouvez utiliser au-dessus des dépendances à la construire.gradle (Module:app) de votre Projet pour la suite de déclarations d'IMPORTATION
import org.apache.http.de l'entité.ContentType;
import org.apache.http.de l'entité.le mime.MIME;
OriginalL'auteur Eshan Chattaraj