Keine Cache-Version

Caching deaktiviert Standardeinstellung für diese Seite:aktiviert (code LNG204)
Wenn die Anzeige zu langsam ist, können Sie den Benutzermodus deaktivieren, um die zwischengespeicherte Version anzuzeigen.

Manipuler des objets java.net.URL

Bien que sauver une URL sous forme de chaîne de caractères semble sans conséquences, il est préférable de considérer une URL comme un objet (“Oriented Object Minded”3), dont nous pouvons manipuler les champs tels que protocole, nom d'hôte, port, requête, etc.

La classe java.net.URL est une abstraction d'une URL dont les instances sont utilisées pour référer ou pour accéder à un objet sur l'Internet. Au lieu d'utiliser l'héritage pour les instances des différentes sortes d'URL, la classe URL utilise le strategy pattern, pour lequel le gestionnaire de protocole (“protocol handler”) représente la stratégie.

Inhaltsverzeichnis Haut

Créer un objet URL

Une URL est immutable.

Nous ne devons pas nous préoccuper des détails du protocole utilisé, du format des données qui seront récupérées, ni de la manière de communiquer avec le serveur.

Un objet URL peut être construit depuis une chaîne de caractères, ou en spécifiant les champs individuels (protocole, nom d'hôte, port, requête, etc.). Nous pouvons aussi spécifier qu'une URL est relative à une autre URL.

Les 6 constructeurs à notre disposition sont suceptibles de lancer une exception de type MalformedURLException si nous tentons de créer un objet URL ayant un protocole non supporté. Les protocoles supportés dépendent de l'implémentation. Si nous désirons utiliser un protocole qui n'est pas supporté par la machine virtuelle Java (JVM), nous devons installer un gestionnaire de protocole (“protocol handler”).

Le code suivant affiche les protocoles supportés en utilisant l'exception levée.

  1. package protocols;
  2.  
  3. import java.net.MalformedURLException;
  4. import java.net.URL;
  5. import java.util.Iterator;
  6. import java.util.Set;
  7. import java.util.TreeSet;
  8.  
  9. public class SupportedJVMProtocols {
  10. private Set protocols = new TreeSet();
  11.  
  12. public SupportedJVMProtocols(){
  13. protocols.add("http://www.gaudry.be/");
  14. protocols.add("mailto:infobrol@ibelgique.com");
  15. protocols.add("telnet://localhost:8080/");
  16. protocols.add("file://C://temp");
  17. protocols.add("gopher://info.asu.edu/");
  18. protocols.add("nfs://acides.adn/arn/shemas/");
  19. protocols.add("rmi://metalab.inc.edu/RenderEngine");
  20. protocols.add("verbatim:http://www.adc.org/");
  21. protocols.add("jdbc:mysql://purine.guanine.edu:3306/News");
  22. }
  23.  
  24. public void search(){
  25. Iterator itr = protocols.iterator();
  26. String urlString = null;
  27. while(itr.hasNext()){
  28. try{
  29. urlString = (String)itr.next();
  30. URL url = new URL(urlString);
  31. System.out.println(url.getProtocol() + " is supported");
  32. }
  33. String protocol = urlString.substring(0, urlString.indexOf(':'));
  34. System.out.println(protocol + " is not supported");
  35. }
  36. }
  37. }
  38.  
  39. public static void main(String[] args) {
  40. SupportedJVMProtocols s = new SupportedJVMProtocols();
  41. s.search();
  42. }
  43. }

Ce qui devrait donner plus ou moins ceci :

file is supported
gopher is supported
http is supported
jdbc is not supported
mailto is supported
nfs is not supported
rmi is not supported
telnet is not supported
verbatim is supported

Inhaltsverzeichnis Haut

Inhaltsverzeichnis Haut

Récupérer des données depuis une URL

Trois manières s'offrent à nous pour accéder aux données par un objet URL :

  • La méthode openStream() nous retourne l'information au travers d'un objet InputStream.
  • La méthode openConnection() nous retourne un objet URLConnection.
  • Les méthodes getContent() et getContent(Class[] classes) nous retournent le contenu.

Inhaltsverzeichnis Haut

Méthode openStream()

La méthode openStream() nous permet de nous connecter à la ressource référencée par l'URL, en effectuant les transactions nécessaires entre le client et le serveur (“hand-shaking”6). Cette méthode nous retourne l'information par le biais d'un InputStream.

Par cette méthode, nous n'avons aucun accès aux en-têtes HTTP, ni aucune information relative au protocole. Les données ne sont donc pas interprétées, et sont récupérées telles qu'elles sont lues sur la ressource. Nous ne pouvons donc obtenir aucune information sur l'encodage des données que nous retourne le flux. Par exemple, dans le cas de la lecture d'une page Web, nous devons mettre en place un parseur pour extraire la balise meta spécifiant l'encodage, dans l'en-tête du document si cette dernière est présente.

Inhaltsverzeichnis Haut

Méthode openConnection()

La méthode openConnection() nous offre la possibilité d'accéder aux headers HTTP, ce que ne nous permettait pas la méthode openStream(). openConnection() ouvre pour nous un socket vers l'URL spécifiée, et nous retourne une connexion ouverte vers la ressource désirée, au travers d'un objet URLConnection. Nous pouvons donc communiquer directement avec le serveur.

Inhaltsverzeichnis Haut

Méthode getContent()

Les méthodes getContent() et getContent(Class[] classes) nous permettent de récupérer le contenu référencé par l'URL, et tentent de créer à partir du flux un objet dont le type est déterminé par le type MIME.

Avec la méthode getContent(), nous pouvons peu aisément déterminer le type d'objet que nous récupèrerons. Il est alors préférable d'utilmiser la méthode getContent(Class[] classes), en combinaison avec un test instanceof pour déterminer quelle classe dans le tableau est retournée.

Deutsche Übersetzung

Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.

Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.

Vielen Dank im Voraus.

Dokument erstellt 25/10/2005, zuletzt geändert 02/08/2019
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/java-url.html

Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.

Aufzeichnungen

  1. a,b,c,d,e,f… 5 weitere Links… Uniform Resource Locator : entspricht « localisateur uniforme de ressource » en français

  2. a,b,c,d,e,f… 5 weitere Links… URL : “Uniform Resource Locator” (en français, « localisateur uniforme de ressource »)

  3.  Oriented Object Minded : entspricht « conçeption orienté-objet » en français

  4.  Java irtual Machine : entspricht « machine virtuelle Java » en français

  5.  JVM : “Java irtual Machine” (en français, « machine virtuelle Java »)

  6.  hand-shaking : entspricht « poignée de mains » en français

  7.  hand-shaking : « Bonjour, c'est moi le client ! » « Ah salut c'est toi, moi c'est le serveur »

  8. a,b Hypertext Transfer Protocol : entspricht « protocole de transfert hypertexte » en français

  9. a,b HTTP : “Hypertext Transfer Protocol” (en français, « protocole de transfert hypertexte »)

  10.  Hypertext Markup Language : entspricht « langage de balisage hypertexte » en français

  11.  HTML : “Hypertext Markup Language” (en français, « langage de balisage hypertexte »)

Inhaltsverzeichnis Haut