Comme nous avons su que Apache HTTP Client
a été supprimé dans API 23
Suppression du client HTTP Apache
Cependant, la bibliothèque Volley
utilise toujours la bibliothèque de Apache
telle que
import org.Apache.http.Header;
import org.Apache.http.HttpEntity;
import org.Apache.http.HttpResponse;
import org.Apache.http.HttpStatus;
import org.Apache.http.StatusLine;
import org.Apache.http.conn.ConnectTimeoutException;
import org.Apache.http.impl.cookie.DateUtils;
Et j'ai testé 2 projets: l'un avec compileSdkVersion 22
, l'autre avec compileSdkVersion 23
, j'ai 2 captures d'écran:
compileSdkVersion 22
compileSdkVersion 23
J'ai 2 questions:
Apache
à l'exécution, trouvent-ils dans API22 ou une version inférieure?Apache
. Sinon, mes projets actuels fonctionneront-ils encore à l'avenir lorsque la bibliothèque de Apache
sera complètement supprimée et non prise en charge?Mon anglais n'est peut-être pas aussi clair, cependant, j'espère que vous comprenez ma question.
Toute explication sera appréciée.
UPDATE:
À partir des commentaires de @ random, j'ai créé un nouveau projet API23 en utilisant la bibliothèque officielle Volley de Google (je veux dire par git clone https://Android.googlesource.com/platform/frameworks/volley
comme suggéré par Google ici ), au lieu d'utiliser compile 'com.mcxiaoke.volley:library:1.0.17'
dans le fichier build.gradle
. Oui, vous avez des erreurs avec le manque de bibliothèque Apache lors de la construction du projet. Doit ajouter useLibrary 'org.Apache.http.legacy'
dans le fichier build.gradle
comme documenté.
2nd UPDATE:
Je viens de personnaliser la fonctionnalité volley de Google (en tant que module de mon projet) supprimant la bibliothèque Apache. S'il vous plaît aller à mon exemple de projet GitHub pour votre référence. Toutefois, veuillez noter que cela n’a pas été complètement testé pour tous les cas et que je n’ai testé que 02 cas simples: GET
et POST
demandes avec mon service Web qui est ASP.NET Web API
.
Il semble que la bibliothèque Volley dans Android M soit complètement fouillée. Un bogue a déjà été archivé et reconnu par Google.
https://code.google.com/p/Android-developer-preview/issues/detail?id=3013
Vous devriez jouer le rôle de star et le suivre pour toute mise à jour ultérieure.
METTRE À JOUR
En ce qui concerne votre première question, vous ne recevez pas d'erreur pour les fichiers Apache
manquants car la bibliothèque que vous utilisez est toujours compilée à l'aide de l'API 22
Android_BUILD_TARGET_SDK_VERSION=22
Android_BUILD_TOOLS_VERSION=22.0.1
Android_BUILD_SDK_VERSION=22
https://github.com/mcxiaoke/Android-volley/blob/master/gradle.properties
Consultez également ce numéro ouvert dans la bibliothèque , Selon lequel vous pouvez ajouter une bibliothèque héritée.
Android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
useLibrary 'org.Apache.http.legacy'
...
}
Suppression du client HTTP Apache Cet aperçu supprime la prise en charge du client HTTP Apache. Si votre application utilise ce client et cible Android 2.3 (API de niveau 9) ou supérieur, utilisez plutôt la classe HttpURLConnection. Cette API est plus efficace car elle réduit l'utilisation du réseau grâce à la compression transparente et à la mise en cache des réponses, ainsi qu'à la consommation d'énergie. Pour continuer à utiliser les API HTTP Apache, vous devez d'abord déclarer la dépendance suivante au moment de la compilation dans votre fichier build.gradle:
Android {
useLibrary 'org.Apache.http.legacy'
}
Android s'éloigne d'OpenSSL vers la bibliothèque BoringSSL. Si vous utilisez le NDK Android dans votre application, ne vous connectez pas à des bibliothèques cryptographiques ne faisant pas partie de l'API NDK, telles que libcrypto.so et libssl.so. Ces bibliothèques ne sont pas des API publiques et peuvent changer ou se rompre sans préavis entre les versions et les périphériques. En outre, vous pouvez vous exposer à des vulnérabilités de sécurité. Modifiez plutôt votre code natif pour appeler les API de cryptographie Java via JNI ou pour établir une liaison statique avec une bibliothèque de cryptographie de votre choix.
Android {
useLibrary 'org.Apache.http.legacy'
}
dependencies {
compile 'commons-httpclient:commons-httpclient:3.1'
}
Ajoutez ceci aux dépendances de votre application, puis fonctionne correctement:
dépendances {... compiler 'org.jbundle.util.osgi.wrapped: org.jbundle.util.osgi.wrapped.org.Apache.http.client: 4.1.2' }
Appache Http
est supprimé d'Android API level 23
si vous utilisez toujours le client Apache Http, vous pouvez inclure Android { useLibrary 'org.Apache.http.legacy'}
dans votre project - module build.gradle
C'est une énorme hystérie à propos du client HTTP d'Apache. Vous pouvez continuer à l'utiliser dans n'importe quel projet sans aucune conséquence. Pourquoi perdre du temps à transférer du code dans d'autres bibliothèques? J'ai décrit la meilleure façon de continuer à utiliser les bibliothèques Apache ici: https://stackoverflow.com/a/37623038/1727132 (spoiler: n'utilisez pas la version précédente!)