153 votes

Comment puis-je faire un HTTP GET en Java ?

Comment faire un HTTP GET en Java?

233voto

Kalpak Points 984

Si vous souhaitez diffuser n'importe quelle page web, vous pouvez utiliser la méthode ci-dessous.

import java.io.*;
import java.net.*;

public class c {

   public static String getHTML(String urlToRead) throws Exception {
      StringBuilder result = new StringBuilder();
      URL url = new URL(urlToRead);
      HttpURLConnection conn = (HttpURLConnection) url.openConnection();
      conn.setRequestMethod("GET");
      try (BufferedReader reader = new BufferedReader(
                  new InputStreamReader(conn.getInputStream()))) {
          for (String line; (line = reader.readLine()) != null; ) {
              result.append(line);
          }
      }
      return result.toString();
   }

   public static void main(String[] args) throws Exception
   {
     System.out.println(getHTML(args[0]));
   }
}

59voto

cletus Points 276888

Techniquement, vous pourriez le faire avec un socket TCP direct. Cependant, je ne le recommanderais pas. Je vous recommanderais vivement d'utiliser Apache HttpClient à la place. Dans sa forme la plus simple:

GetMethod get = new GetMethod("http://httpcomponents.apache.org");
// exécuter la méthode et gérer les réponses d'erreur.
...
InputStream in = get.getResponseBodyAsStream();
// Traiter les données du flux d'entrée.
get.releaseConnection();

et voici un exemple plus complet.

41voto

HyLian Points 2058

Si vous ne souhaitez pas utiliser de bibliothèques externes, vous pouvez utiliser les classes URL et URLConnection de l'API standard de Java.

Un exemple ressemble à ceci:

String urlString = "http://oùquecesoit.com/someAction?param1=valeur1¶m2=valeur2....";
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
// Faites ce que vous voulez avec ce flux

9voto

Laurence Gonsalves Points 50783

La manière la plus simple qui ne nécessite pas de bibliothèques tierces est de créer un objet URL puis d'appeler soit [openConnection](http://java.sun.com/javase/6/docs/api/java/net/URL.html#openConnection()) ou [openStream](http://java.sun.com/javase/6/docs/api/java/net/URL.html#openStream()) dessus. Notez que cela est une API assez basique, donc vous n'aurez pas beaucoup de contrôle sur les en-têtes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X