Comment exécuter des requêtes HTTP POST dans Android?
1. Ajoutez des autorisations Internet au manifeste Android.
2. Créez un bloc try.
3. Créez des objets HttpURLConnection et URL.
4. Définissez la sortie à publier sur le serveur.
HTTP Post fait partie d'une classe HTTP obsolète comme org.apache.http et AndroidHttpClient à partir d'Android 5,1. Migrez votre code vers les classes HttpURLConnection qui incluent la fonctionnalité de publication. HTTP Post est utilisé en Java pour demander qu'un serveur Web spécifique reçoive et stocke les données soumises dans un formulaire de demande. Les données sont soumises et stockées dans des paires nom-valeur. Voici quelques exemples de paires: email - votre adresse email; nom d'utilisateur-votre nom d'utilisateur; et mot de passe - votre mot de passe.
Partie 1 sur 2: création d'un bloc try et d'un objet httpurlconnection
- 1Ajoutez des autorisations Internet au manifeste Android. Le manifeste Android est un fichier XML qui fournit des informations importantes au système Android qui détermine la compatibilité de l'appareil et l'accès aux fonctionnalités. Dans le fichier "AndroidManifest.xml", entrez la ligne suivante pour fournir un accès Internet.
<uses-permission android: name = "android.permission.INTERNET" />
- 2Créez un bloc d'essai. En Java, une instruction try est un gestionnaire d'exceptions qui empêchera le programme de se bloquer s'il n'est pas en mesure d'effectuer une action. Étant donné que cela nécessitera une connexion à un emplacement réseau, une instruction try interceptera une exception si elle ne parvient pas à établir une connexion. Vous pouvez l'ajouter à une nouvelle méthode Java.
essayez {// entrez des instructions qui peuvent provoquer des exceptions}
- 3Créez des objets httpurlconnection et URL. Java est un langage orienté objet. Un objet est composé d'états et de comportements qui est une instance d'une classe. L'objet HttpURLConnection envoie et reçoit des données sur Internet. Dans votre code, commencez votre nouvelle méthode en créant un objet URL et attribuez-lui une URL pour l'objet HttpURLConnection auquel se connecter.
URL url = nouvelle URL ("http://exampleurl.com/"); Client HttpURLConnection = (HttpURLConnection) url.openConnection ();
- Pour une meilleure pratique, établissez l'URL et les objets HttpURLConnection en dehors du bloc try pour faciliter la détection des exceptions.
URL url = nouvelle URL ("http://exampleurl.com/"); Client HttpURLConnection = null; essayez {client = (HttpURLConnection) url.openConnection (); }
Partie 2 sur 2: publier la demande de sortie et gérer les exceptions
- 1Définissez la méthode de demande pour publier. Pour envoyer des informations au serveur, vous devez définir le type de l'objet HttpURLConnection sur post et définir la sortie sur true à l'aide de setDoOutput (). Utilisez la fonction setRequestProperty () pour définir une propriété de requête générale qui nécessite deux éléments, une clé avec une requête connue du serveur et une valeur contenue dans la clé correspondante.
- La fonction setRequestProperty () est utilisée comme en-tête de demande Accept-Encoding pour désactiver la décompression automatique.
client.setRequestMethod ("POST"); client.setRequestProperty ("Clé", "Valeur"); client.setDoOutput (vrai);
- La fonction setRequestProperty () est utilisée comme en-tête de demande Accept-Encoding pour désactiver la décompression automatique.
- 2Sortez le flux sur le serveur. Vous devez demander le flux de sortie au serveur afin de pouvoir écrire dans le flux de sortie, ou publier, puis vider et fermer le flux lorsque vous avez terminé.
OutputStream outputPost = new BufferedOutputStream (client.getOutputStream ()); writeStream (outputPost); outputPost.flush (); outputPost.close ();
- Pour des raisons de performances, il est judicieux d'indiquer au serveur la taille en octets du contenu. La meilleure méthode est setFixedLengthStreamingMode (int) lorsque la longueur du corps est connue, tandis que setChunkedStreamingMode (int) est utilisé si sa longueur n'est pas connue. Ne pas utiliser l'une des méthodes précédentes entraîne la mise en mémoire tampon de l'objet HttpURLConnection du corps complet en mémoire avant d'être transmis.
client.setFixedLengthStreamingMode (outputPost.getBytes (). length); client.setChunkedStreamingMode (0);
- 3Attrapez toutes les exceptions. Après l'instruction try, utilisez le bloc catch pour rechercher une exception pour l'entrée et la sortie avec IOException, interceptez une erreur d'URL avec l'exception MalformedURL et vérifiez si l'URL ne fournit pas de réponse à temps avec l'exception SocketTimeoutException.
catch (MalformedURLException error) {// Gère une URL mal saisie} catch (SocketTimeoutException error) {// Gère le délai d'accès à l'URL. } catch (IOException error) {// Gère les erreurs d'entrée et de sortie}
- 4Déconnectez-vous de l'URL. Une fois que vous avez terminé votre connexion URL, vous devrez vous déconnecter de l'URL. Assurez-vous de vérifier que vous êtes connecté à une URL avant de tenter de vous déconnecter.
finalement {if (client! = null) // Assurez-vous que la connexion n'est pas nulle. client.disconnect (); }
- IDE Java
- Outils de développement Android (SDK, émulateur, etc.)
- Téléphone du développeur Android ou autre appareil alimenté par Android (facultatif pour les tests)
- Connexion Internet (pour tester)
Questions et réponses
- Comment résoudre la méthode «writeStream (java.io.OutputStream)»?Cette méthode semble n'être qu'un exemple de ce que vous devez faire à ce stade. Vous devez ensuite effectuer votre propre implémentation pour écrire des données dans OutputStream. Vous pouvez trouver des exemples simples sur Internet expliquant comment écrire différents types de données dans un OutputStream.
- Je reçois des erreurs indiquant que le symbole ne peut pas être résolu pour les objets URL et HttpURLConnection. Quels packages suis-je censé importer?Android Studio peut être configuré pour importer automatiquement les packages une fois que les symboles sont des références ou collés dans le code. Vous pouvez également ajouter manuellement les packages en saisissant et sans les symboles fléchés de fin de livre. Pour configurer Android Studio pour importer automatiquement les packages, les utilisateurs Windows et Linux doivent cliquer sur Fichier> Paramètres> Edti> Général> Importation automatique> Les utilisateurs Java et Mac doivent cliquer sur Android Studio> Préférences. Remplacez "Insérer les importations sur coller" par tous et cochez "Ajouter des importations sans ambiguïté à la volée", puis enregistrez vos modifications.
- Pourquoi avons-nous besoin d'inclure la ligne android.permission.INTERNET dans le manifeste Android?Le fichier Android Manifest présente au système Android des informations essentielles sur l'application et est requis pour chaque application dans son répertoire racine. L'autorisation INTERNET accorde l'accès à l'API qui ouvre les sockets réseau de l'appareil.
Questions sans réponse
- Qu'est-ce que c'est - - "writeStream (outputPost);"?
En parallèle