Introduction : pourquoi URLConnection est un must-know pour tout développeur Java
\n\nVous êtes-vous déjà demandé comment votre navigateur préféré ou votre application mobile communique avec le serveur ? La magie se cache dans des requêtes HTTP simples mais puissantes. Et en Java, il existe un « couteau suisse » pour cela : la classe java.net.URLConnection.
Bien que Java 11 ait introduit le nouveau HttpClient modulaire, des milliers de développeurs dans le monde continuent d'utiliser le bon vieux URLConnection. Pourquoi ? Premièrement, il s'agit de code legacy qu'il faut maintenir. Deuxièmement, il est simple et ne nécessite pas de bibliothèques tierces. Et troisièmement, comprendre le fonctionnement des requêtes HTTP à bas niveau fait de vous un véritable expert.
Dans cet article, nous ne nous contenterons pas de copier une réponse de Stack Overflow. Nous analyserons deux approches pour travailler avec URLConnection et les comparerons au HttpClient moderne. Vous apprendrez à envoyer des requêtes GET et POST, à gérer les erreurs, à définir des en-têtes et à lire les réponses du serveur. C'est parti !
Qu'est-ce que java.net.URLConnection et pourquoi en a-t-on besoin ?
\n\nLa classe java.net.URLConnection est une classe abstraite qui représente une connexion active à une ressource spécifiée par une URL. En termes simples : c'est un pont entre votre application Java et le serveur sur Internet. Elle permet de :
- \n
- Ouvrir une connexion avec le serveur \n
- Envoyer des données (GET, POST, PUT, DELETE) \n
- Lire la réponse du serveur \n
- Gérer les en-têtes de requête et de réponse \n
- Travailler avec les cookies \n
Mais il y a un détail : URLConnection ne fait rien par elle-même. Elle fournit seulement un mécanisme. Toute la magie est réalisée par ses sous-classes — par exemple, HttpURLConnection pour travailler avec HTTP.
Approche 1 : La méthode classique avec HttpURLConnection (éprouvée par le temps)
\n\nCette méthode a été utilisée par les pères fondateurs de la programmation Java. Elle est fiable, mais nécessite un travail manuel. Analysons-la avec un exemple de requête GET.
\n\nExemple 1 : Requête GET avec traitement de la réponse
\n\nimport java.io.BufferedReader;\nimport java.io.InputStreamReader;\nimport java.net.HttpURLConnection;\nimport java.net.URL;\n\npublic class GetRequestExample {\n public static void main(String[] args) throws Exception {\n // 1. Créer un objet URL\n URL url = new URL("https://api.github.com/users/octocat");\n \n // 2. Ouvrir la connexion\n HttpURLConnection connection = (HttpURLConnection) url.openConnection();\n \n // 3. Configurer la requête\n connection.setRequestMethod("GET");\n connection.setRequestProperty("User-Agent", "Mozilla/5.0");\n connection.setConnectTimeout(5000);\n connection.setReadTimeout(5000);\n \n // 4. Vérifier le code de réponse\n int responseCode = connection.getResponseCode();\n System.out.println("Code de réponse : " + responseCode);\n \n // 5. Lire le corps de la réponse\n if (responseCode == HttpURLConnection.HTTP_OK) {\n BufferedReader in = new BufferedReader(\n new InputStreamReader(connection.getInputStream()));\n String inputLine;\n StringBuilder response = new StringBuilder();\n \n while ((inputLine = in.readLine()) != null) {\n response.append(inputLine);\n }\n in.close();\n \n System.out.println("Corps de la réponse : " + response.toString());\n } else {\n System.out.println("La requête GET a échoué");\n }\n \n // 6. Fermer la connexion\n connection.disconnect();\n }\n}\n\n\nAnalyse du code :
\n- \n
setRequestMethod— définit la méthode HTTP (GET, POST, PUT, DELETE) \n setRequestProperty— définit les en-têtes (User-Agent, Content-Type, etc.) \n Blogs
Book Recommendations
Lire aussi
Comment connecter une crate Rust locale avant publication : guide étape par étape
Fuseaux horaires en Go : ne perdez plus une heure, un jour ou des données
Pourquoi mysql_* en PHP est un mal : analyse complète avec exemples
Fonctions Serverless en Go sur AWS Lambda : techniques avancées et optimisation
Rust sur GitHub : les meilleurs projets open-source pour les développeurs