Sisendi lugemine veebist
URL’i parsimine
URL klass pakub kasutajatele mitmeid erinevaid meetodeid, mis lubavad teha päringuid URL objektide kohta. Sellistelt objektidelt võib küsida nende protokolli, host’i nime, pordi numbrit, authority’t, päringut, faili nime, path’i ning viidet.
Selleks on meetodid:
getProtocol() - tagastab URL’i protokolli nime
getAuthority() - tagastab URL’i authority komponendi
getHost() - tagastab URL’i võõrustaja nime
getPort() - tagastab Integer’i kujul pordi numbri, juhul kui see puudub tagastab -1
getPath() - tagastab URL’i path komponendi
getQuery() - tagastab URL’i päringu komponendi
getFile() - tagastab path komponendi ning getQuery() väärtuse, kui see on olemas
getRef() - tagastab URL’i reference komponendi
Oluline on meeles pidada, et iga URL ei sisalda kõiki eelloetletud komponente, need meetodid on olemas, sest tihti kasutatakse URL’e, milles sisalduvad mõned või kõik nendest komponentidest. URL klass on üpris HTTP keskne.
Koodinäide:
import java.net.*;
import java.io.*;
public class ParseURL {
public static void main(String[] args) throws Exception {
URL aURL = new URL("http://example.com:80/docs/books/tutorial"
+ "/index.html?name=networking#DOWNLOADING");
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());
}
}
Koodinäide tagastab:
protocol = http
authority = example.com:80
host = example.com
port = 80
path = /docs/books/tutorial/index.html
query = name=networking
filename = /docs/books/tutorial/index.html?name=networking
ref = DOWNLOADING
URL’ilt lugemine
URL’i kohta saab välja kutsuda meetodi openStream(), mis loob voo, millest saab URL’i sisu välja lugeda. openStream() meetod tagastab java.io.InputStream objekti, seega on URL’ilt lugemine sarnane näiteks failist andmete lugemisega.
Järgnev koodinäide kasutab openStream() meetodit, et saada sisendvoog URL’ist http://www.oracle.com/. Seejärel kasutatakse BufferedReader’it, et lugeda vajalikku infot. Kõik, mis loetakse sisse, kopeeritakse output voogu.
import java.net.*;
import java.io.*;
public class URLReader {
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.oracle.com/");
BufferedReader in = new BufferedReader(
new InputStreamReader(url.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
}
Kui panna antud kood tööle, peaks nägema konsoolis veebilehe http://www.oracle.com/ HTML koodi ning tekstilist sisu; juhul kui ei suudeta leida Oracle’i serverit või URL’i lugemisel tekib mõni muu viga, kuvatakse terminalis hoopis veateadet.