j'utilise Android studio API22 et j'ai ces erreurs:
'org.Apache.http.HttpEntity' is deprecated
'org.Apache.http.HttpResponse' is deprecated
'org.Apache.http.NameValuePair' is deprecated
'org.Apache.http.client.HttpClient' is deprecated
'org.Apache.http.client.entity.UrlEncodedFormEntity' is deprecated
'org.Apache.http.client.methods.HttpPost' is deprecated
'org.Apache.http.impl.client.DefaultHttpClient' is deprecated
'org.Apache.http.message.BasicNameValuePair' is deprecated
'org.Apache.http.params.BasicHttpParams' is deprecated
'org.Apache.http.params.HttpConnectionParams' is deprecated
'org.Apache.http.params.HttpParams' is deprecated
'org.Apache.http.util.EntityUtils' is deprecated
Comment puis-je résoudre ça?
Ajoutez ceci à votre note
useLibrary 'org.Apache.http.legacy'
Exemple
Android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 2
versionName "1.0.1"
}
buildTypes {
release {
debuggable false
signingConfig signingConfigs.releaseConfig
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
debugSigned {
debuggable true
signingConfig signingConfigs.releaseConfig
}
debug {
debuggable true
}
}
useLibrary 'org.Apache.http.legacy'
}
Citant moi-même :
Si vous devez continuer à utiliser l’API HttpClient, envisagez de basculer vers OkHttp et leur couche de compatibilité HttpClient, ou envisagez de basculer vers l’édition Android séparée de HttpClient de Apache. Sinon, passez à HttpURLConnection ou à l’API native d’OkHttp.
Ou, en fonction de l'utilisation que vous utilisez pour HttpClient, utilisez une bibliothèque réseau plus spécifique (Retrofit pour les services Web, Picasso ou Universal Image Loader pour les images, etc.).
Notez également que HttpClient est supprimé du SDK pour l'aperçu du développeur M, ce qui indique qu'il sera supprimé dans la prochaine édition d'Android. Bien qu'il existe une solution de contournement pour continuer à utiliser HttpClient dans M , vous devez vraiment passer à autre chose.
La version du client HTTP Apache fournie en stock sur Android était très très ancienne .
Google Android 1.0 a été publié avec un instantané pré-BETA de Apache HttpClient. Pour coïncider avec la première version Android, les API Apache HttpClient 4.0 devaient être gelées prématurément, tandis que de nombreuses interfaces et structures internes n’étaient toujours pas entièrement élaborées. Alors qu'Apache HttpClient 4.0 arrivait à maturité, le projet s'attendait à ce que Google incorpore les dernières améliorations de code dans son arborescence de codes. Malheureusement, cela n’est pas arrivé.
Si vous ne souhaitez pas passer à une nouvelle API, vous pouvez ajouter manuellement une version plus récente de la bibliothèque Apache HttpClient dans votre projet pour remplacer l'ancienne version obsolète dans le SDK Android <22.
Pour ce faire, le moyen le plus simple de cibler le SDK 23+ consiste à utiliser le nouveau package Apache HttpClient pour Android de Marek Sebera (comme suggéré par Apache ), qui peut potentiellement servir de remplacement instantané. Ajoutez simplement la dépendance suivante à votre fichier build.gradle (en mettant à jour le numéro de version si nécessaire):
compile "cz.msebera.Android:httpclient:4.4.1.1"
et remplacez import org.Apache.http.*
par import cz.msebera.Android.httpclient.*
partout dans votre projet.
Notez que de nombreuses classes de l'ancienne bibliothèque sont obsolètes (par exemple, HttpParams
, ThreadSafeClientConnManager
), donc la réécriture du code sera probablement une meilleure solution.
Edit: J'ai rencontré des cas dans lesquels les utilisateurs obtenaient des exceptions de délai d'expiration lorsqu'ils étaient derrière des serveurs proxy après la mise à jour vers le nouveau client Http. Comme le code est rempli d'avertissements obsolètes dans le monde entier, nous avons décidé que cela ne valait pas la peine d'essayer de résoudre le problème. Je recommande de tester très soigneusement avant d'essayer de le mettre en production.
Comme mentionné dans d'autres réponses, une solution bien meilleure consiste à mordre la balle et à basculer sur la version Android HttpUrlConnection
native, ou si cela ne répond pas à vos besoins, vous pouvez utiliser la bibliothèque OkHttp
, qui correspond à HttpUrlConnection
en interne basé sur de toute façon .
HttpClient interprété à partir d'Android Lollypop 5.1 (API 22): -
Mais nous pouvons toujours utiliser HttpClient en utilisant le code suivant dans le studio Android: -
Aller au fichier app\build.gradle:
defaultConfig {
applicationId "com.XXXXX.XXX"
minSdkVersion 16
targetSdkVersion 23
-----------
-----------
useLibrary 'org.Apache.http.legacy'
}
[OU ALTERNATIVE]
Téléchargez et ajoutez les fichiers HttpClient jar à votre projet ou utilisez okHttp .
Utiliser la dépendance suivante dans votre diplôme
dependencies {
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.Apache.http.client:4.1.2'
}
Téléchargez le fichier jar org.Apache.http.legacy
à partir de ici .
Dans le fichier build.gradle
, tapez le code suivant
defaultConfig {
useLibrary 'org.Apache.http.legacy'
}
Enregistrez le fichier .jar téléchargé à l'emplacement suivant
./sdk/platforms/Android-23/optional/(.jar file)
J'utilise Android-23 sous des plates-formes, cela dépend du niveau d'API que vous utilisez. Si le dossier facultatif n'existe pas, créez-le et collez-y le fichier .jar avant de synchroniser le projet de dégradé.
Ajoutez ceci à votre note
useLibrary 'org.Apache.http.legacy'
Exemple
Android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 2
versionName "1.0.1"
}
buildTypes {
release {
debuggable false
signingConfig signingConfigs.releaseConfig
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
debugSigned {
debuggable true
signingConfig signingConfigs.releaseConfig
}
debug {
debuggable true
}
}
useLibrary 'org.Apache.http.legacy'
}
Cette bibliothèque vous permettra de l'utiliser sans problème, du moins je n'ai eu aucun problème jusqu'à présent avec elle.