Работа в WWW
После создания объекта соединение еще не установлено, и можно задать параметры связи. Это делается следующими методами:
- setDoOutput (boolean out) – если аргумент out равен true, то передача пойдет от клиента на хост; значение по умолчанию false;
- setDoinput (boolean in) – если аргумент in равен true, то передача пойдет с хоста к клиенту; значение по умолчанию true, но если уже выполнено setDoOutput(true), то значение по умолчанию равно false;
- setUseCaches (boolean cache) – если аргумент cache равен false, то передача пойдет без кэширования, если true, то принимается режим по умолчанию;
- setDefaultUseCaches(boolean default) – если аргумент default равен true, то принимается режим кэширования, предусмотренный протоколом;
- setRequestProperty(String name, String value) – добавляет параметр name со значением value к заголовку посылаемого сообщения.
После задания параметров нужно установить соединение методом connect (). После соединения задание параметров уже невозможно. Следует учесть, что некоторые методы доступа getxxx(), которым надо получить свои значения с хоста, автоматически устанавливают соединение, и обращение к методу connect () становится излишним.
Web-сервер возвращает информацию, запрошенную клиентом, вместе с заголовком, сведения из которого можно получить методами getxxxo, например:
- getcontentType () – возвращает строку типа string, показывающую тип пересланной информации, например, "text/html", или null, если сервер его не указал;
- getcontentLength () – возвращает длину полученной информации в байтах или -1, если сервер ее не указал;
- getcontent () – возвращает полученную информацию в виде объекта типа Object;
- getContentEncoding () – возвращает строку типа string с кодировкой полученной информации, или null, если сервер ее не указал.
Два метода возвращают потоки ввода/вывода, созданные для данного соединения:
- getlnputStream() – возвращает входной поток типа InputStream;
- getOutputStream() – возвращает выходной поток типа OutputStream.
Прочие методы, а их около двадцати, возвращают различные параметры соединения.
Обращение к методу bhv.openstream(), записанное в листинге 19.1, – это, на самом деле, сокращение записи:
bhv.openConnection().getlnputStream()
В листинге 19.2 показано, как переслать строку текста по адресу URL.
Web-сервер, который получает эту строку, не знает, что делать с полученной информацией. Занести ее в файл? Но с каким именем, и есть ли у него право создавать файлы? Переслать на другую машину? Но куда?