java:urls

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
java:urls [2015/03/23 20:18]
gthanos created
java:urls [2016/02/26 11:15] (current)
Line 1: Line 1:
 ====== Δουλεύοντας με URLs ====== ====== Δουλεύοντας με URLs ======
-Το πρώτο μέρος του ​URL ονομάζεται αναγνωριστικό πρωτοκόλλου ​και δείχνει το τι πρωτόκολλο χρησιμοποιείται ​κάθε φορά, και το δεύτερο μέρος ονομάζεται όνομα του πόρου και διευκρινίζει τη διεύθυνση ​IP ή το όνομα τομέα όπου βρίσκεται ​ο πόρος. Το αναγνωριστικό πρωτοκόλλου και το όνομα του πόρου χωρίζονται από μια άνω ​και κάτω ​τελεία και δύο καθέτους.+Τα [[wp>​Uniform_resource_locator|URL]]s (Uniform Resource Locators), είναι διαδικτυακές διευθύνσεις οι οποίες προϋποθέτουν την ύπαρξη ενός διαδικτυακού ​πρωτοκόλλου ​στο ​επίπεδο της εφαρμογής (π.χ http, ftp) το οποίο υλοποιείται ​πάνω από την [[http://​en.wikipedia.org/​wiki/​Internet_protocol_suite|TCP/​IP στοίβα]].  
 +Κάθε URL έχει ​τα εξής χαρακτηριστικά. 
 +  * **πρωτόκολλο:** το είδος ​το πρωτοκόλλου που ​θα χρησιμοποιηθεί (π.χ. http, ftp κλπ) 
 +  * **host name:​** ​η IP διεύθυνση ή το Domain Name στο οποίο θα γίνει η σύνδεση. 
 +  * **port:** η πόρτα στην οποία θα γίνει η σύνδεση. 
 +  * **pathname:​** ​το τμήμα του URL μετά το hostname και πριν τις παραμέτρους 
 +  * **parameters:​** ​οι παράμετροι του URL. 
 +  * **ref:** (html specific) Μία ​αναφορά σε ένα συγκεκριμένο σημείο μέσα ​στο αρχείο html, η οποία παραπέμπει σε μία συγκεκριμένη θέση ​μέσα στο αρχείο
 + 
 +Με βάση ​τα παραπάνω ​το παρακάτω ​URL αναλύεται ως εξής 
 +<​code>​ 
 +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'​ 
 +</​code>​ 
 + 
  
 ===== Δημιουργώντας ένα URL ===== ===== Δημιουργώντας ένα URL =====
Line 21: Line 42:
 Όλοι οι κατασκευαστές της κλάσης URL μπορούν να δημιουργήσουν ένα [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​net/​MalformedURLException.html|MalformedURLException]] εάν το πρωτόκολλο που εισάγεται δεν είανι σωστό ή ένα από τα ορίσματα έχει τιμή NULL. Θα πρέπει να διαχειριστείτε το συγκεκριμένο Exception μέσε ένα try/catch block. Όλοι οι κατασκευαστές της κλάσης URL μπορούν να δημιουργήσουν ένα [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​net/​MalformedURLException.html|MalformedURLException]] εάν το πρωτόκολλο που εισάγεται δεν είανι σωστό ή ένα από τα ορίσματα έχει τιμή NULL. Θα πρέπει να διαχειριστείτε το συγκεκριμένο Exception μέσε ένα try/catch block.
  
 +===== Αναλύοντας ένα URL με βάση το API της κλάσης =====
 +
 +<code java DecomposeURL.java>​
 +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());​
 +    }
 +}
 +</​code>​
 +
 +Το αποτέλεσμα εκτέλεσης του παραπάνω κώδικα είναι το εξής
 +<​code>​
 +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
 +</​code>​
 +
 +===== Χρησιμοποιώντας την κλάση URL για να ανοίξουμε ένα απομακρυσμένο resource =====
 +
 +<code java URLReader.java>​
 +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() );
 +    }
 +  }
 +}
 +</​code>​
 +
 +To παραπάνω θα μπορούσε να γραφεί ισοδύναμα ως εξής με χρήση ενός αντικειμένου [[http://​docs.oracle.com/​javase/​7/​docs/​api/​java/​net/​URLConnection.html|URLConnection]].
 +<code java URLConnectionReader.java>​
 +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() );
 +    }
 +  }
 +}
 +</​code>​
  
java/urls.1427141938.txt.gz · Last modified: 2016/02/26 11:15 (external edit)