Généralement, il est inévitable de rencontrer des appels vers des interfaces externes lors du développement d'un projet. Cet article décrit la méthode d'appel de la classe HttpURLConnection en arrière-plan Java pour simuler les requêtes du navigateur. Peut être utilisé pour les appels d’interface. Partagez-le avec tout le monde pour votre référence. La méthode spécifique de mise en œuvre est la suivante :
Copiez le code comme suit : package com.cplatform.movie.back.test ;
importer java.io.BufferedReader ;
importer java.io.DataOutputStream ;
importer java.io.InputStreamReader ;
importer java.net.HttpURLConnection ;
importer java.net.URL ;
importer java.net.URLEncoder ;
classe publique HttpURLConnectionTest {
public static final String GET_URL = "http://112.4.27.9/mall-back/if_user/store_list?storeId=32";
public static final String POST_URL = "http://112.4.27.9/mall-back/if_user/store_list";
/**
* L'interface appelle GET
*/
public static void httpURLConectionGET() {
essayer {
URL url = new URL(GET_URL); // Convertit la chaîne en adresse de requête URL
Connexion HttpURLConnection = (HttpURLConnection) url.openConnection();//Ouvrir la connexion
connexion.connect();//Session de connexion
// Récupère le flux d'entrée
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
Ligne de ficelle ;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {// Flux de lecture en boucle
sb.append(ligne);
}
br.close();//Fermer le flux
connexion.disconnect(); // Déconnecter
System.out.println(sb.toString());
} attraper (Exception e) {
e.printStackTrace();
System.out.println("Échec!");
}
}
/**
* L'interface appelle POST
*/
public static void httpURLConnectionPOST () {
essayer {
URL url = nouvelle URL (POST_URL);
//Force la connexion urlConnection renvoyée par la méthode open à une connexion HttpURLConnection (identifier une connexion d'objet distant référencée par l'url)
HttpURLConnection connection = (HttpURLConnection) url.openConnection();// Pour le moment, la connexion n'est qu'un objet de connexion, en attente d'être connecté
//Définissez le flux de sortie de la connexion sur true, la valeur par défaut est false (les requêtes de publication transmettent implicitement les paramètres sous la forme d'un flux)
connexion.setDoOutput(true);
//Définit le flux d'entrée de connexion sur true
connexion.setDoInput(true);
//Définit la méthode de requête à publier
connexion.setRequestMethod("POST");
// Le cache de post-requête est défini sur false
connexion.setUseCaches(false);
//Définit si l'instance HttpURLConnection effectue automatiquement la redirection
connexion.setInstanceFollowRedirects(true);
//Définissez chaque attribut dans l'en-tête de la requête (ce qui suit est le type de contenu, défini sur le paramètre from codé par urlEncoded)
// application/x-javascript text/xml->application de données xml/x-javascript->application d'objet json/x-www-form-urlencoded->données de formulaire
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// Établit une connexion (la requête n'est démarrée que lorsque la méthode connection.getInputStream() est appelée. Les paramètres ci-dessus doivent être définis avant cette méthode)
connexion.connect();
//Créer un flux d'entrée et de sortie, utilisé pour sortir les paramètres transportés dans la connexion, (le contenu de sortie est le contenu après ?)
DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());
String parm = "storeId=" + URLEncoder.encode("32", "utf-8"); //La méthode URLEncoder.encode() encode les chaînes
// Paramètres de sortie vers la connexion
dataout.writeBytes(parm);
// Actualise et ferme le flux une fois la sortie terminée
dataout.flush();
dataout.close(); // Étape importante et facile à ignorer (fermez le flux, rappelez-vous !)
System.out.println(connection.getResponseCode());
// La connexion initie une requête et traite la réponse du serveur (obtient le flux d'entrée de la connexion et l'encapsule en tant que bufferedReader)
BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream()));
Ligne de ficelle ;
StringBuilder sb = new StringBuilder(); // Utilisé pour stocker les données de réponse
// Lit le flux en boucle, s'il n'arrive pas à la fin
while ((line = bf.readLine()) != null) {
sb.append(bf.readLine());
}
bf.close(); // Étape importante et facile à ignorer (fermez le flux, rappelez-vous !)
connection.disconnect(); // Détruire la connexion
System.out.println(sb.toString());
} attraper (Exception e) {
e.printStackTrace();
}
}
public static void main (String[] arguments) {
// httpURLConectionGET();
httpURLConnexionPOST();
}
}
J'espère que cet article sera utile à la programmation Java de chacun.