Иллюстрированный самоучитель по Java

Работа в 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.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.