Android Gradle Apache HttpClient n'existe pas?
Je suis en train de convertir un IntelliJ projet Gradle système d'Android Studio, mais je suis en cours d'exécution dans les erreurs avec Apache HttpClient? Ai-je raté quelque chose, les erreurs que j'obtiens sont comme suit:
Error:(10, 30) error: package org.apache.http.client does not exist
Error:(11, 30) error: package org.apache.http.client does not exist
Error:(12, 37) error: package org.apache.http.client.entity does not exist
Error:(13, 38) error: package org.apache.http.client.methods does not exist
Error:(14, 38) error: package org.apache.http.client.methods does not exist
Error:(15, 38) error: package org.apache.http.client.methods does not exist
Error:(16, 35) error: package org.apache.http.impl.client does not exist
Error:(134, 33) error: cannot find symbol class HttpUriRequest
Error:(164, 39) error: cannot find symbol class HttpUriRequest
Error:(106, 17) error: cannot find symbol class HttpGet
Error:(106, 39) error: cannot find symbol class HttpGet
Error:(117, 17) error: cannot find symbol class HttpPost
Error:(117, 40) error: cannot find symbol class HttpPost
Error:(125, 43) error: cannot find symbol class UrlEncodedFormEntity
Error:(135, 9) error: cannot find symbol class HttpClient
Error:(135, 33) error: cannot find symbol class DefaultHttpClient
Error:(155, 18) error: cannot find symbol class ClientProtocolException
Error:(165, 9) error: cannot find symbol class HttpClient
Error:(165, 33) error: cannot find symbol class DefaultHttpClient
Error:(185, 18) error: cannot find symbol class ClientProtocolException
Mon build.gradle fichier a les dépendances suivantes:
dependencies {
compile 'com.google.android.gms:play-services:+'
compile 'org.apache.httpcomponents:httpclient:4.2.6'
compile 'org.apache.httpcomponents:httpmime:4.2.6'
compile files('libs/core.jar')
}
Il semble que beaucoup de gens sont un problème similaire, mais pas à SI ou Google ont une solution donc j'espère que cette question sera d'aider les futurs chercheurs.
Vous devez vous connecter pour publier un commentaire.
Je vous suggère de remplacer l'obsolète apache HttpClient avec la nouvelle HttpURLConnection.
C'est une solution plus propre, il est assez facile de migrer, et, généralement, il est préférable de s'en tenir à la dernière SDK changements que d'essayer de hack/patch/solution de contournement: vous habituellement le regretter plus tard 🙂
Étape 1
devient:
Étape 2
devient:
Étape 2 bis
devient:
si vous utilisez cible sdk 23 ajouter le code ci-dessous dans votre construction.gradle
et de changer votre buildscript à
pour plus d'infos suivez ce lien
Error:(14, 23) error: package org.apache.http does not exist
J'ai eu ce problème et ensuite trouvé ces pages:
Ici vous pouvez voir que apache bibliothèque est obsolète, mais il n'est pas retiré, donc, il faut travailler. Il n'a pas.
Voir.
Et ici vous pouvez voir comment inclure apache bibliothèque à votre projet
Voir.
J'ai résolu le problème en ajoutant la suite de mon build.gradle fichier, comme recommandé dans le deuxième lien.
Toutefois, cela ne fonctionne que si vous utilisez gradle 1.3.0-beta2 ou plus, de sorte que vous devrez ajouter à buildscript dépendances si vous êtes sur une version inférieure:
Espère que cette aide.
Ajouter cette librairie dans
build.gradle
copie
org.apache.http.legacy.jar
qui est enAndroid/Sdk/platforms/android-23/optional
dossier deapp/libs
et a également ajouté cette ligne app.gradle fichier
Mais si vous êtes en utilisant de plus en plus pot de bibliothèques, vous pouvez utiliser ce moyen
Fondamentalement, tout ce que vous devez faire est d'ajouter:
À votre
build.gradle
fichier.Je suis tombé sur le même problème. Daniel Nugent réponse a aidé un peu (après avoir suivi ses conseils
HttpResponse
a été trouvé, mais laHttpClient
il manque encore).Voici donc ce qu'il est corrigé pour moi:
4.5.1.zip
de la binaire sectionhttpcore-4.4.3
&httpclient-4.5.1.jar
dansproject/libs
dossierEspère que cela aide.
J'ai couru dans des problèmes similaires, vous pourriez être en mesure de l'obtenir pour fonctionner à l'aide d'une méthode similaire.
Tout d'abord, essayez avec votre configuration actuelle, exclure
httpclient
dehttpmime
:Dans mon cas, j'ai fixé à l'aide de la suite de pots :
Puis, dans la construction.gradle, à l'exclusion de
httpclient
dehttpmime
:libs/core.jar
pour?Réponse parfaite par Jinu et Daniel
En ajoutant à cela
J'ai résolu le Problème en Utilisant Cela, si votre compileSdkVersion est de 19 ans(DANS MON CAS)
d'autre si votre compileSdkVersion est de 23
ensuite, utilisez
C'est ce que j'ai fait, et ça marche pour moi.
étape 1: ajouter ceci dans la construction.niveau(module: app)
étape 2: synchroniser le projet et fait.
La version du client HTTP Apache fourni sur stock Android a été très très vieux.
Pendant que vous pourrait continuer à utiliser l'ancien obsolète de la bibliothèque via le
useLibrary 'org.apache.http.legacy'
solution de contournement (suggéré par @Jinu et autres), vous avez vraiment besoin de mordre la balle et de mettre à jour quelque chose d'autre, par exemple le natif AndroidHttpUrlConnection
, ou si cela ne répond pas à vos besoins, vous pouvez utiliser le OkHttp bibliothèque, qui est ce queHttpUrlConnection
est en interne, basé sur de toute façon.OkHttp a fait un la couche de compatibilité qui utilise la même API que l'Apache client, bien qu'ils n'implémentent pas tous les mêmes caractéristiques, de sorte que votre kilométrage peut varier.
Tout il est possible d'importer une nouvelle version de Apache client (comme suggéré par @MartinPfeffer), il est probable que la plupart des classes et des méthodes que vous utilisiez avant d'avoir été abandonné, et il y a un assez gros risque que la mise à jour introduira des bugs dans votre code (par exemple, j'ai trouvé des liens que précédemment travaillé derrière un proxy ne fonctionne plus), donc ce n'est pas une bonne solution.
Après avoir passé plusieurs jours sur le sujet, j'ai réussi à le résoudre enfin. Malheureusement, nous en avons besoin si nous voulons utiliser l'extension des fichiers. La solution a été fournie par quelques personnes ici, mais pour moi, les réponses ont été manque un peu de détail mineur qui aurait pu sauver beaucoup de temps pour moi. Voici la séquence des événements pour les novices comme moi à économiser votre temps précieux.
D'abord j'ai importé le dossier "bibliothèque" de D:\Users\Imre\AppData\Local\Android\sdk1\extras\google\play_licensing pour le projet en allant dans Fichier, Nouveau, le Module d'Importation et naviguer vers le dossier "bibliothèque". Si vous ouvrez le SDK Manager et cliquez sur "Lancer Autonome SDK Manager" dans le bas de la fenêtre, vous pouvez passez votre pointeur sur les "Extras" dossier vers le bas dans le fond et le petit jaune info va vous dire où vous trouverez le package que vous souhaitez importer.
Une fois que c'est fait, allez à la "bibliothèque" dans la section de gauche de la fenêtre "Projet" et dans le "Android" de l'onglet ouvert. Ouvrez la section java de la bibliothèque et ouvrir le APKExpansionPolicy classe.
Si vous avez des erreurs et de l'import org.apache.http.NameValuePair et l'import org.apache.http.client.utils.URLEncodedUtils sont gris pâle, ouvrez le construire.gradle(Projet:tout) et assurez-vous que dans "buildscript" en vertu de "dépendances" vous avez le "classpath", com.android.outils.construire:gradle:1.5.0" inclus. La 1.5.0 pourrait être différent dans votre cas. Je suppose que cela dépend de votre version de Studio. Le mien est 1.5.1. Si le vôtre est plus récent, vous serez invité à mettre à jour les numéros.
Après cela, allez à "construire.gradle(Module:bibliothèque) et sur le "useLibrary 'org.apache.http.héritage " dans le "android"section. Synchroniser Maintenant (R/H en haut à droite) devrait être offert. Le faire.
Si vous obtenez plus de messages d'erreur (je ne sais pas parce que je l'ai fait dans l'autre sens), les fichiers Apache pourrait être absent de votre projet, que apache n'est pas supportée. Trouver dans C/D:Utilisateurs/Votrenom/AppData/Local/Android/Sdk/plates-formes/android-23/facultatif et copier/coller dans votreprojet/app/dossier libs. Vous devriez avoir une option.json et un org.apache.http.legacy.jar fichier là. Vous pourriez être mieux de passer par apache du site web et de télécharger la version la plus récente: http://hc.apache.org/downloads.cgi Décompressez l'archive où vous le souhaitez, de l'ouvrir, passez à la "lib", copier le httpclient-4.5.1.jar fichier et remplacer la org.apache.http.legacy.jar fichier avec elle.
De synchronisation et de reconstruire le nettoyage de votre projet, et devrait être bon pour aller.
Juste au cas où, ouvrez votre terminal (L/H en bas de Android Studio) et le type de "gradlew propre". Il va installer un certain nombre de choses. Une fois fait, tapez "gradlew assembler". Il va prendre quelques minutes, mais il vous donnera les erreurs, si vous avez tout bien sûr.
Si vous ne tapez rien dans le Terminal, lancez l'invite de commande (touche Windows+R), tapez cmd, cliquez sur OK, cliquez-droit sur le titre de la petit noir fenêtre (C:\WINDOWS\system32\cmd.exe), les Propriétés, Options, en bas de la fenêtre, vérifiez que l'option "Utiliser l'héritage de la console" est thicked. Redémarrez A. Studio.
Bonne chance!
J'ai eu à les poster car aucune des réponses ci-dessus, travaillé complètement pour moi.
Je suis en utilisant Android Studio
Étape 1: Télécharger le dernier fichier jar (http://www-eu.apache.org/dist//httpcomponents/httpclient/binary/httpcomponents-client-4.5.2-bin.zip)
Étape 2: Copiez collez le .jar fichier dans le dossier libs (à créer si elle n'existe pas déjà) dans votre module (peut être d'application ou de la bibliothèque)
Étape 3: cliquez Droit sur le pot et "Ajouter de la Bibliothèque". Il va automatiquement ajouter le fichier jar d'une dépendance dans votre module de gradle fichier
Étape 4: Maintenant automatiquement votre problème sera résolu, mais dans le cas où vous êtes à l'aide de proguard dans votre application, il vous donnera un avertissement au sujet de dupliquer les fichiers de classe et ne vous laisse pas construire. C'est un bug connu et vous avez besoin d'ajouter ce qui suit à votre proguard-règles
Bonne Chance!
Dans mon cas, j'ai mis à jour l'un de mes bibliothèques dans mon projet android.
Je suis en utilisant le Réservoir, comme mon cache solution de stockage: https://github.com/anupcowkur/Reservoir
Je suis allé à partir de:
À:
La bibliothèque de l'auteur doit avoir enlevé le commons-io de la bibliothèque de l'opération donc, mon appli ne fonctionnait plus.
J'ai dû inclure manuellement le commons-io en ajoutant des ce sur gradle:
https://mvnrepository.com/artifact/commons-io/commons-io/2.5
J'ai cloné le suivant: https://github.com/google/play-licensing
Puis je l'ai importé dans mon projet.