Ce qu'il faut savoir sur la programmation réseau Android et l'apprentissage du protocole HTTP


Introduction à cette section :

Inconsciemment, nous sommes finalement arrivés au chapitre de la programmation réseau Android. Ce à quoi nous jouions auparavant était entièrement autonome, ce qui ne doit pas suffire, n'est-ce pas. ? Au début de cette section, nous apprendrons quelques choses liées à la programmation réseau Android : A quoi sert la programmation réseau Android ? Protocole HTTP Pour apprendre, utilisez la classe d'analyse Json intégrée pour analyser Json, plusieurs méthodes courantes d'analyse XML, HttpUrlConnection et L'utilisation de HttpClient, le téléchargement et le téléchargement de fichiers ; l'utilisation de WebService, l'utilisation de WebView, la communication Socket, etc. !

De plus, nous sommes le client, le contenu du serveur n'est pas à notre portée, et Xiaozhu n'est pas bon dans ce domaine. Notre exigence minimale est : Être capable de maîtriser la capacité d'obtenir et de. analysez les données renvoyées par le serveur ! Bon, sans plus tarder, commençons cette section !


Trois façons pour Android d'interagir avec Internet

1.png


2. 🎜>

Dans le développement actuel, lorsque nous traitons avec le serveur, nous utilisons généralement une communication basée sur le protocole Http, il est donc très important de bien apprendre le protocole Http. Ce qui est important, bien sûr, c'est que nous n'avons pas besoin de prêter trop d'attention aux détails, il suffit d'avoir une compréhension générale ! Ce sont toutes des choses conceptuelles !


1) Qu'est-ce que le protocole HTTP ?

Réponse : protocole de transfert hypertexte, un protocole de couche application du protocole TCP/IP, utilisé Définir le processus d'échange de données entre le navigateur WEB et le serveur WEB. Une fois que le client s'est connecté au serveur Web, s'il souhaite obtenir le serveur Web Une certaine ressource Web dans un serveur Web doit se conformer à un certain format de communication Le protocole HTTP est utilisé pour définir le format de communication entre le client et le serveur Web.

2) La différence entre Http 1.0 et Http 1.1

Réponse : Avec le protocole 1.0, une fois que le client a établi une connexion avec le serveur Web, il ne peut obtenir que une seule ressource Web ! Le protocole 1.1 permet au client d'obtenir plusieurs ressources web sur une seule connexion après avoir établi une connexion avec le serveur web !

3) Le flux de travail sous-jacent du protocole HTTP :

Réponse : Nous devons d'abord connaître deux noms :

  • SYN (synchrone) : signal de prise de contact utilisé lorsque TCP/IP établit une connexion
  • ACK(Acknowledgement) : caractère de confirmation pour confirmer que les données envoyées ont été correctement acceptées
Vient ensuite le concept de

Poignée de main à trois voies TCP/IP :

    Le client envoie un paquet syn (syn = j) au serveur, entre l'état SYN_SEND, puis attend que le serveur confirme
  • que le serveur reçoit le paquet syn, confirme la synchronisation du client (ack = j + 1), et envoie en même temps un paquet SYN (syn=k ) à lui-même, C'est-à-dire que le paquet SYN + ACK, le serveur entre dans l'état SYN_RECV
  • Le client reçoit le paquet SYN + ACK et envoie le paquet de confirmation ACK (ack = k +1) au serveur une fois l'envoi terminé. terminé, le client et le serveur Entrez dans l'état ESTABLISHED, terminez la poignée de main à trois voies, puis les deux commencent à transmettre des données
Si ce n'est pas encore clair, regardons le diagramme schématique de la poignée de main à trois :

2.png

Compris, non ? Alors jetons un œil à un processus de fonctionnement Http :

  • L'utilisateur clique sur l'url (lien hypertexte) du navigateur, le navigateur web établit une connexion avec le serveur web
  • Après avoir établi la connexion, le client envoie une requête au serveur Le format de la requête est : Uniform Resource Identifier (URL) + numéro de version du protocole (généralement 1.1) + informations MIME (plusieurs en-têtes de message) + une ligne vide
  • Une fois que le serveur aura reçu la demande, il donnera les informations de retour correspondantes et le format de retour pour : Numéro de version du protocole + ligne d'état (résultat du traitement) + plusieurs en-têtes d'informations + lignes vides + contenu de l'entité (tel que le HTML renvoyé)
  • Le client reçoit les informations renvoyées par le serveur, les affiche via le navigateur, puis communique avec le côté service est déconnecté bien sûr si ; Si une erreur se produit à une certaine étape, le message d'erreur sera renvoyé au client et affiché, tel que : l'erreur 404 classique !

Si le processus ci-dessus n'est pas clair, nous pouvons utiliser HttpWatch ou Firefox pour capturer le package : PS : Le site Web du test est le système d'administration académique de l'école de Xiaozhu. Après avoir entré le compte et le mot de passe et demandé la connexion, nous pouvons voir les informations suivantes :

Contenu de la demande HTTP :

. 3.png

Contenu inclus dans la réponse HTTP :

4.png

C'est clair en un coup d'œil, non ?

4) Processus métier du protocole Http

5.png

5) Plusieurs méthodes de requête de Http

Développement réel Le les méthodes que nous utilisons plus fréquemment sont Get et Post, mais d'autres méthodes de requête peuvent également être utilisées dans le développement réel, telles que PUT. Il est utilisé dans les projets actuels de Xiaozhu. Pour la commodité de tous, listons ci-dessous toutes les méthodes de requête :

  • Get : Requête pour obtenir les données identifiées par la ressource Request-URI <. 🎜>
  • POST : Ajouter de nouvelles données après la ressource identifiée par Request-URI
  • HEAD Requête pour obtenir la ressource identifiée par Request-URI Informations de réponse de la ressource header
  • PUT : Demander au serveur de stocker une ressource et utiliser Request-URI comme identifiant
  • DELETE : Demander au serveur de supprimer le Requête -Ressources identifiées par URI
  • TRACE : Demande au serveur de renvoyer les informations de la demande reçue, principalement utilisées pour les tests ou le diagnostic
  • CONNECT : Utilisation réservée dans le futur
  • OPTIONS : demande d'interrogation des performances du serveur, ou interrogation d'options liées aux ressources
6) Comparaison de Get et Post

Les deux qui sont les plus utilisés, il faut bien sûr que je les compare !

  • GET : Après l'adresse URL demandée, les données transmises au serveur sont amenées sous la forme de ?, et plusieurs données sont séparées par &. Mais la capacité des données ne peut généralement pas dépasser 2K, par exemple : http://xxx?username=…&pawd=… Il s'agit de GET
  • POST : cela peut être spécifié dans le contenu de l'entité demandée. . Le serveur envoie des données, et il n'y a pas de limite sur la quantité de transmission
  • Une autre chose à noter est que ces deux choses envoient des données, mais le mécanisme d'envoi est différent. l'Internet. "GET obtient les données du serveur et POST envoie les données au serveur" !! De plus, la sécurité GET est très faible et la sécurité Post est élevée. Cependant, l'efficacité d'exécution est meilleure que la méthode Post. Nous utilisons GET lors des requêtes et POST lors de l'ajout, de la suppression ou de la modification de données ! !

7) Collecte de codes de statut HTTP

Bien sûr, ces codes de statut sont juste à titre de référence. En fait, la décision-. le pouvoir appartient au serveur. (Backend) À portée de main, une solution consiste à demander Ce que le serveur nous renvoie, c'est le statut, ou une autre méthode. Il est préférable de l'utiliser lorsque l'application n'a pas besoin d'avoir plusieurs versions linguistiques. Donnez-nous une chaîne JSON des informations sur le résultat, et nous pourrons simplement l'afficher directement, afin que nous puissions être beaucoup moins paresseux ! Vous trouverez ci-dessous une collection de codes d'état pour référence : Téléchargez simplement :

  • 100~199 : La demande est acceptée avec succès, le client doit soumettre la demande suivante pour terminer l'ensemble du processus.
  • 200 : OK, la demande du client est réussie
  • 300~399 : La ressource demandée a été déplacée vers une nouvelle adresse (302,307,304)
  • 401 : La demande n'est pas autorisée, le code d'état doit être modifié avec le champ d'en-tête WWW-Authenticate
  • 403 : Interdit, le serveur a reçu la requête, mais a refusé de fournir le service
  • 404 : Not Found, la ressource demandée n'existe pas, inutile de le préciser
  • 500 : Erreur de serveur interne, une erreur inattendue s'est produite sur le serveur
  • 503 : Serveur indisponible, le serveur est actuellement incapable de traiter les demandes des clients et peut revenir à la normale après un certain temps

8) Caractéristiques du protocole HTTP

Tant que vous connaissez les éléments conceptuels, ne le mémorisez pas. Copiez-collez simplement depuis l'Encyclopédie Baidu :

. 1. Supporte le mode client/serveur.

2. Simple et rapide : Lorsqu'un client demande un service au serveur, il lui suffit de transmettre la méthode et le chemin de la requête. Les méthodes de requête couramment utilisées incluent GET, TÊTE, POSTE. Chaque méthode spécifie un type différent de contact entre le client et le serveur. En raison de la simplicité du protocole HTTP, la taille du programme du serveur HTTP est petite et la vitesse de communication est très rapide.

3. Flexible : HTTP permet la transmission de tout type d'objet de données. Le type en cours de transfert est marqué par Content-Type.

4. Aucune connexion : Le sens de l'absence de connexion est de limiter chaque connexion à ne traiter qu'une seule requête. Une fois que le serveur a traité la demande du client, Après avoir reçu la réponse du client, la connexion est déconnectée. Cette méthode permet de gagner du temps de transmission.

5. Stateless : Le protocole HTTP est un protocole sans état. Sans état signifie que le protocole n'a aucune capacité de mémoire pour le traitement des transactions. L'absence de statut signifie que si un traitement ultérieur nécessite les informations précédentes, celles-ci doivent être retransmises, ce qui peut entraîner une augmentation de la quantité de données transférées par connexion. En revanche, le serveur répond plus rapidement lorsqu’il n’a pas besoin d’informations préalables.

PS : Le protocole OSI à sept couches et le modèle TCP à quatre couches ne seront pas expliqués dans la série de base~ Si vous êtes intéressé, vous pouvez vous renseigner par vous-même !


Résumé de cette section :

Cette section explique les outils que nous devons compléter dans le développement Android lié au réseau, ainsi que le protocole HTTP Concepts connexes, je pense que tout le monde a déjà une vague image de l'interaction entre le terminal mobile Android et le serveur. Étudions-la dans la section suivante. En-têtes de requête et en-têtes de réponse du protocole Http ! C'est tout pour cette rubrique, merci~