Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Po_Tp.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать

4. Соединение с помощью объекта класса urlConnection

Если создается приложение, которое позволяет читать из каталога сервера WWW текстовые или двоичные файлы, то можно создать поток методом openStream() или получить содержимое файла методом getContent(). Однако есть и другая возможность.

Чтение файла

Сначала можно создать канал как объект класса URLConnection, вызвав метод openConnection(),определенный в класса URL, а затем можно создать для этого канала входной поток, воспользовавшись методом getInputStream, определенным в классе URLConnection, или получить содержимое файла методом getContent() этого же класса, как это сделано в следующих фрагментах апплетов:

URL myUrl; URLConnection myUrlConnection;

try

{ myUrl=new URL(getCodeBase(),"index.html");

myUrlConnection=myUrl.openConnection();

} catch(MalformedURLException e) { /* обработка исключения */ }

try

{ InputStream InStream=myUrlConnection.getInputStream();

// чтение данных из потока InStream

InStream.close();

} catch(IOException e) { /* обработка исключения */ }

или

URL myUrl; URLConnection myUrlConnection; Object obj;

try

{ myUrl=new URL(getCodeBase(),"index.html");

myUrlConnection=myUrl.openConnection();

} catch(MalformedURLException e) { /* обработка исключения */ }

try

{ obj=myUrlConnection.getContent();

} catch(IOException e) { /* обработка исключения */ }

if(obj instanceof String) { /* действия, если строка */ }

else { /* тип неизвестен, действия по умолчанию */ }

Такая методика позволяет определить или установить перед созданием потока некоторые характеристики канала, а также получить дополнительную информацию о ресурсе.

Рассмотрим информационные методы класса URLConnection. Метод getContentLength() возвращает размер ресурса в байтах. Тип MIME ресурса (например, «image/gif») можно определить при помощи метода getContentType(). Дату посылки ресурса возвращает метод getDate(). При помощи ряда методов getHeaderField...() можно прочитать различную информацию из заголовка файла.

Приведем в качестве примера приложение UrlOpenConnection (пример 3), в котором открывается соединение с файлом каталога удаленного сервера и информация об этом файле выводится на консоль:

/*------------- Пример 3. Файл UrlOpenConnection.java -------------*/

import java.net.*;

public class UrlOpenConnection

{ public static void main(String args[])

{ URL Url; URLConnection UrlConnection;

try

{ // создание URL файла и открытие соединения с ним

Url=new URL

("http://www.vvsu.ru/cts/teachers/arhipova/pictures/clock.gif");

UrlConnection=Url.openConnection();

// информация о файле

System.out.println("Size:"+UrlConnection.getContentLength());

System.out.println("Type:"+UrlConnection.getContentType());

System.out.println("Date:"+UrlConnection.getDate());

}

catch(Exception e) { System.out.println(e.toString()); }

}

}

Запись в файл

После создания канала как объекта класса URLConnection вызовом метода openConnection(),определенного в класса URL, можно не только создавать для этого канала входной поток, воспользовавшись методом getInputStream(), определенным в классе URLConnection, или получить содержимое файла методом getContent() этого же класса, но и создавать выходной поток для записи в этот файл. Для создания выходного потока используется метод getOutputStream() класса URLConnection:

try

{ InputStream InStream=myUrlConnection.getInputStream();

// чтение данных из потока InStream

InStream.close(); // закрытие потока

OutputStream OutStream=myUrlConnection.getOutputStream();

// запись данных в поток

OutStream.flush();

OutStream.close();

}

catch(Exception e) { /* обработка исключения */ }

Если попытаться вызвать методы getInputStream() и getOutputStream() для такого типа URL, который не поддерживает эти методы , то возникает исключение UnknownServiceException.

Настройка класса URLConnection

Для конфигурации класса URLConnection существуют различные варианты настройки (элементам настройки присваиваются значения по умолчанию). Некоторые из этих значений по умолчанию можно изменить.

Так, например, методом setDoInput() задается флаг doIinput, который показывает, поддерживает ли данный URLConnection входные данные (по умолчанию значение этого флага - true). Метод getDoInput() возвращает установленное значение флага doInput.

Метод setDoOutput() устанавливается флаг doOutput, который показывает, поддерживает ли данный URLConnection выходные данные (по умолчанию значение этого флага - false). Метод getDoOutput() возвращает установленное значение флага doOutput.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]