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