Τα URLs (Uniform Resource Locators), είναι διαδικτυακές διευθύνσεις οι οποίες προϋποθέτουν την ύπαρξη ενός διαδικτυακού πρωτοκόλλου στο επίπεδο της εφαρμογής (π.χ http, ftp) το οποίο υλοποιείται πάνω από την TCP/IP στοίβα. Κάθε URL έχει τα εξής χαρακτηριστικά.
Με βάση τα παραπάνω το παρακάτω URL αναλύεται ως εξής
http://inf-server.inf.uth.gr:8888/courses/CE325/doku.php?id=java:urls&priority=max#writting_to_urls * πρωτόκόλλο --> 'http' * hostname --> 'inf-server.inf.uth.gr' * port number --> '8888' * pathname --> '/courses/CE325/doku.php' * parameters --> 'id=java:urls&priority=max' * reference --> 'writting_to_urls'
Μπορείτε να δημιουργήσετε ένα αντικείμενο του τύπου URL με τους παρακάτω τρόπους
URL myURL = new URL("http://example.com/pages/");
URL page1URL = new URL(myURL, "page1.html"); URL page2URL = new URL(myURL, "page2.html");
URL yourURL = new URL("http", "example.com", 80, "pages/page1.html");
Όλοι οι κατασκευαστές της κλάσης URL μπορούν να δημιουργήσουν ένα MalformedURLException εάν το πρωτόκολλο που εισάγεται δεν είανι σωστό ή ένα από τα ορίσματα έχει τιμή NULL. Θα πρέπει να διαχειριστείτε το συγκεκριμένο Exception μέσε ένα try/catch block.
import java.net.*; import java.io.*; public class DecomposeURL { public static void main(String[] args) throws Exception { URL aURL = new URL("http://example.com:80/docs/books/tutorial" + "/index.html?name=john&sirname=smith#flushing"); System.out.println("protocol = " + aURL.getProtocol()); System.out.println("authority = " + aURL.getAuthority()); System.out.println("host = " + aURL.getHost()); System.out.println("port = " + aURL.getPort()); System.out.println("path = " + aURL.getPath()); System.out.println("query = " + aURL.getQuery()); System.out.println("filename = " + aURL.getFile()); System.out.println("ref = " + aURL.getRef()); } }
Το αποτέλεσμα εκτέλεσης του παραπάνω κώδικα είναι το εξής
protocol = http authority = example.com:80 host = example.com port = 80 path = /docs/books/tutorial/index.html query = name=john&sirname=smith filename = /docs/books/tutorial/index.html?name=john&sirname=smith ref = flushing
import java.net.*; import java.io.*; public class URLReader { public static void main(String[] args) { URL url=null; try { url = new URL(args.length>0 ? args[0] : "http://feeds.bbci.co.uk/news/rss.xml"); BufferedReader in = new BufferedReader( new InputStreamReader(url.openStream()) ); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println(inputLine); } in.close(); } catch(MalformedURLException ex) { System.out.println("Malformed URL: +"+ args[0] ); ex.printStackTrace(); } catch(IOException ex) { System.out.println("Error while reading or writing from URL: "+url.toString() ); } } }
To παραπάνω θα μπορούσε να γραφεί ισοδύναμα ως εξής με χρήση ενός αντικειμένου URLConnection.
import java.net.*; import java.io.*; public class URLConnectionReader { public static void main(String[] args) { URL url=null; try { url = new URL(args.length>0 ? args[0] : "http://feeds.bbci.co.uk/news/rss.xml"); URLConnection urlcon = url.openConnection(); BufferedReader in = new BufferedReader( new InputStreamReader(urlcon.getInputStream()) ); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println(inputLine); } in.close(); } catch(MalformedURLException ex) { System.out.println("Malformed URL: +"+ args[0] ); ex.printStackTrace(); } catch(IOException ex) { System.out.println("Error while reading or writing from URL: "+url.toString() ); } } }