Работа в WWW
Среди программного обеспечения Internet большое распространение получила информационная система WWW (World Wide Web), основанная на прикладном протоколе HTTP (Hypertext Transfer Protocol). В ней используется расширенная адресация, называемая URL (Uniform Resource Locator).
Эта адресация имеет такие схемы:
protocol://authority@host:port/path/file#ref protocol://authority@host:port/path/file/extra_path?info
Здесь необязательная часть authority – это пара имя:пароль для доступа к хосту, host – это IP-адрес или доменное имя хоста. Например:
http://www.bhv.ru/ http://132.192.5.10:8080/public/some.html ftp://guest:password@lenta.ru/users/local/pub ffle:///C:/text/html/index.htm
Если какой-то элемент URL отсутствует, то берется стандартное значение. Например, в первом примере номер порта port равен 80, а имя файла path – какой-то головной файл, определяемый хостом, чаще всего это файл с именем index.html. В третьем примере номер порта равен 21. В последнем примере в форме URL просто записано имя файла index.htm, расположенного на разделе С: жесткого диска той же самой машины.
В Java для работы с URL есть класс URL пакета java.net. Объект этого класса создается одним из шести конструкторов. В основном конструкторе:
URL(String url)
…задается расширенный адрес url в виде строки. Кроме методов доступа getxxx(), позволяющих получить элементы URL, в этом классе есть два интересных метода:
- openConnection () – определяет связь с URL и возвращает объект класса URLConnection;
- openStream() – устанавливает связь с URL и открывает входной поток в виде возвращаемого объекта класса inputstream.
Листинг 19.1 показывает, как легко можно получить файл из Internet, пользуясь методом openStream().
Листинг 19.1. Получение Web-страницы.
import java.net.*;
import java.io.*;
class SimpleURL{
public static void main(String[] args){
try{
URL bhv = new URL(" http://www.bhv.ru/ ");
BufferedReader br = new BufferedReader(
new InputStreamReader(bhv.openStream()));
String line;
while ((line = br.readLine())!= null)
System.out.println(line);
br.close();
}catch(MalformedURLException me){
System.err.println("Unknown host: " + me);
System.exit(0);
}catch(IOException ioe){
System.err.println("Input error: " + ioe);
}
}
}
Если вам надо не только получить информацию с хоста, но и узнать ее тип: текст, гипертекст, архивный файл, изображение, звук, или выяснить длину файла, или передать информацию на хост, то необходимо сначала методом openConnection () создать объект класса URLConnection или его подкласса HttpURLConnection.
