Maison > Questions et réponses > le corps du texte
关于Android的三种http请求方式:
(1)okhttp
(2)httpURLConnection
(3)httpClient
谁熟悉的能介绍一下,并解析一下区别呢?
高洛峰2017-04-17 17:47:01
Cette question est un peu problématique. Ce ne sont pas trois manières. okhttp est simplement une encapsulation de niveau supérieur de l'accès réseau et httpClient sont deux manières spécifiques d'accéder.
1), HttpClient
HttpClient est un sous-projet sous Apache Jakarta Common. Il est utilisé pour fournir une boîte à outils de programmation client efficace, la plus récente et riche en fonctionnalités qui prend en charge le protocole HTTP, et il prend en charge la dernière version de. le protocole HTTP et les suggestions.
Caractéristiques :
Basé sur un langage Java standard et pur. Implémentation de Http1.0 et Http1.1
Implémente toutes les méthodes HTTP (GET, POST, PUT, DELETE, HEAD, OPTIONS et TRACE) dans une structure extensible orientée objet.
Prend en charge le protocole HTTPS.
Établissez une connexion transparente via un proxy HTTP.
Utilisez la méthode CONNECT pour établir une connexion https tunnelisée via le proxy HTTP.
Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, schéma d'authentification SNPNEGO/Kerberos.
Schéma d'authentification personnalisé du plug-in.
L'usine de prises portable et fiable facilite l'utilisation de solutions tierces.
Le gestionnaire de connexions prend en charge les applications multithread. Prend en charge la définition du nombre maximum de connexions, ainsi que la définition du nombre maximum de connexions pour chaque hôte, et découvre et ferme les connexions expirées.
Gérer automatiquement les cookies dans Set-Cookie.
Politique de cookies personnalisés du plug-in.
Le flux de sortie de Request peut éviter de mettre en mémoire tampon le contenu du flux directement sur le serveur socket.
Le flux d'entrée de Response peut lire efficacement le contenu correspondant directement depuis le serveur socket.
Utilisez KeepAlive pour maintenir des connexions persistantes dans http1.0 et http1.1.
Obtenez directement le code de réponse et les en-têtes envoyés par le serveur.
Possibilité de définir le délai d'expiration de la connexion.
Comment utiliser
Utiliser HttpClient pour envoyer des requêtes et recevoir des réponses est très simple et nécessite généralement les étapes suivantes.
Créez un objet HttpClient.
Créez une instance de la méthode de requête et spécifiez l'URL de la requête. Si vous devez envoyer une requête GET, créez un objet HttpGet ; si vous devez envoyer une requête POST, créez un objet HttpPost.
Si vous devez envoyer des paramètres de requête, vous pouvez appeler la méthode setParams (HetpParams params) commune à HttpGet et HttpPost pour ajouter des paramètres de requête pour l'objet HttpPost, vous pouvez également appeler la méthode setEntity (entité HttpEntity) ; pour définir les paramètres de la requête.
Appelez execute(HttpUriRequest request) de l'objet HttpClient pour envoyer une requête. Cette méthode renvoie une HttpResponse.
Appelez getAllHeaders(), getHeaders(String name) de HttpResponse et d'autres méthodes pour obtenir les en-têtes de réponse du serveur ; appelez la méthode getEntity() de HttpResponse pour obtenir l'objet HttpEntity, qui encapsule le contenu de la réponse du serveur. Le programme peut obtenir le contenu de la réponse du serveur via cet objet.
Libérez la connexion. Que la méthode d'exécution réussisse ou non, la connexion doit être libérée
2), HttpURLConnection
Trouvez juste une photo pour vous
3) okhttp
Vous pouvez rechercher et analyser ceci en ligne, mais je ne le déplacerai pas
Une chose à dire ici est la suivante : dans les versions Android 2.3 et supérieures, essayez d'utiliser HttpURLConnection, et dans les versions Android 2.2 et inférieures, essayez d'utiliser HttpClient.
Parce que :
HttpClient
DefaultHttpClient et son frère AndroidHttpClient sont tous deux des classes d'implémentation spécifiques de HttpClient. Ils ont tous deux de nombreuses API, et leur implémentation est relativement stable avec très peu de bugs.
Mais en même temps, en raison du grand nombre d'API dans HttpClient, il nous est difficile de le mettre à niveau et de l'étendre sans détruire la compatibilité. Par conséquent, l'équipe Android n'est actuellement pas active dans l'amélioration et l'optimisation de HttpClient.
HttpURLConnection
HttpURLConnection est un client HTTP polyvalent et léger qui peut être utilisé pour effectuer des opérations HTTP et convient à la plupart des applications. Bien que l'API fournie par HttpURLConnection soit relativement simple, elle nous facilite également son utilisation et son extension.
Cependant, avant la version 2.2 d'Android, HttpURLConnection avait toujours des bugs ennuyeux. Par exemple, lorsque la méthode close() est appelée sur un InputStream lisible, cela peut entraîner l’échec du pool de connexions. Ensuite notre solution habituelle est de désactiver directement la fonction pool de connexions
ringa_lee2017-04-17 17:47:01
La différence est si grande qu’il faudrait beaucoup de temps pour l’expliquer, alors expliquons-la brièvement.
HttpClient est une excellente boîte à outils client HTTP dans le monde Java, donc initialement Android l'a également inclus dans le support, j'espère que tout le monde pourra l'utiliser facilement pour faire des requêtes HTTP. Cependant, ce qu'Android incluait à l'origine était une version bêta de HttpClient, ce qui a entraîné une utilisation ultérieure de HttpClient dans Android criblée de bugs. Les ingénieurs Android ne semblaient pas avoir l'intention de résoudre ce problème et ont même exclu HttpClient du framework ultérieur. Il n'est donc fondamentalement pas recommandé d'utiliser HttpClient sur Android.
Pourquoi Android est-il prêt à abandonner HttpClient ? Une raison importante est qu’ils préfèrent utiliser HttpURLConnection. HttpURLConnection appartient à la catégorie des API Java. Par rapport aux bibliothèques tierces telles que HttpClient, HttpURLConnection est plus facile à contrôler entre les mains de Google. Cependant, l'encapsulation de HttpURLConnection est relativement simple et le traitement des requêtes HTTP est de niveau relativement bas, il n'est donc pas particulièrement pratique à utiliser.
OkHttp est similaire à HttpClient et est également une bibliothèque tierce. Cependant, son packaging est de relativement haut niveau, ce qui signifie qu'il est plus simple et plus facile à utiliser, et il dispose d'un support dédié pour Android, ce qui est bien meilleur que les projets inachevés comme HttpClient.