Пакет java. Пакет java net Java поддерживает семейства протоколов tcp, udp и т д. В составе пакета java net
Скачать 18.88 Kb.
|
Пакет java.net Java поддерживает семейства протоколов TCP, UDP и т.д. В составе пакета java.net имеется множество классов, связанных с сетью. Рассмотрим часть из них. Класс InetAddress Класс InetAddress используется для работы с числовым IP-адресом или доменным именем. Поддерживаются адреса IPv4 и IPv6. Чтобы создать объекта класса InetAddress, следует использовать один из многих доступных методов-фабрик, например. static InetAddress getLocalHost() - возвращает объект класса InetAddress, представляющий локальный хост static InetAddress getByName(String host) - возвращает объект класса InetAddress хоста по указанному имени static InetAddress[] getAllByName(String host) - возвращает массив объект класса InetAddress, представляющий все адреса, в которое преобразуется конкретное имя Некоторые методы класса: byte[] getAddress() - возвращает байтовый массив, представляющий IP-адрес в порядке байтов сети String getHostAddress() - возвращает строку, представляющую адрес хоста, ассоциированного с объектом класса InetAddress String getHostName() - возвращает строку, представляющую имя хоста, ассоциированного с объектом класса InetAddress Также существуют два подкласса - Inet4Address и Inet6Address. В большинстве случаев вы можете использовать класс InetAddress, поскольку класс приспособлен для обоих стилей. Класс ServerSocket Класс ServerSocket является слушателем и ожидает подключения клиентов. Класс предназначен для серверов. Класс Socket Класс Socket предназначен для клиентов. URL Класс URL представляет специальный интерфейс для доступа к информации по всей сети. Класс URLConnection Класс URLConnection предназначен для доступа к ресурсам на удалённом сервере. Установив соединение, вы можете просматривать свойства объекта. Методы: int getContentLength() - возвращает размера в байтах содержимого объекта. Если размер недоступен, то возвращается -1 long getContentLenghLong() - возвращает размера в байтах содержимого объекта. Если размер недоступен, то возвращается -1 String getContentType() - возвращает тип содержимого по заголовку content-type или null long getDate() - возвращает время и дату ответа в миллисекундах InputStream getInputStream() - возвращает объект класса InputStream, который можно использовать для получения содержимого ресурса HttpURLConnection_Класс_HttpURLConnection'>Класс HttpURLConnection Класс HttpURLConnection является подклассом класса URLConnection и обеспечивает поддержку соединений по протоколу HTTP. Некоторые методы класса: static boolean getFollowRedirects() - возвращает true, если автоматически следует перенаправление String getRequestMethod() - возвращает строковое представление метода выполнения запроса. По умолчанию используется метод GET int getResponseCode() - возвращает код ответа HTTP String getResponseMessage() - возвращает сообщение ответа, ассоциированное с кодом ответа void setRequestMethod(String method) - устанавливает метод, которым выполняются запросы HTTP. По умолчанию принят метод GET Знакомство с классом HttpURLConnection Для соединения с веб-серверами Android предлагает несколько способов взаимодействия. В новых проектах для современных устройств рекомендуется использовать класс HttpURLConnection, который мы с вами рассмотрим на примерах. Класс java.net.HttpURLConnection является подклассом java.net.URLConnection и позволяет реализовать работу по отправке и получении данных из сети по протоколу HTTP. Данные могут быть любого типа и длины. Данный класс следует использовать для отправки и получения потоковых данных, размеры которых нельзя заранее определить. Используя данный класс, вам не нужно думать о сокетах и реализовывать собственные способы общения между клиентом и сервером. Алгоритм использования следующий: Получить объект HttpURLConnection через вызов URL.openConnection() и привести результат к HttpURLConnection Подготовить необходимый запрос. Основное в запросе - сам сетевой адрес. Также в запросе можно указать различные метаданные: учётные данные, тип контента, куки сессии и т.п. Опционально загрузить тело запроса. В этом случае используется метод setDoOutput(true). Передача данных, записанных в поток, возвращается через метод getOutputStream() Прочитать ответ. Заголовок ответа обычно включает метаданные, такие как тип и длина контента, даты изменения, куки сессии. Прочитать данные из потока можно через метод getInputStream(). Если у ответа нет тела, то метод возвращает пустой поток. Разорвать соединение. После прочтения ответа от сервера HttpURLConnection следует закрыть через вызов метода disconnect(). Тем самым вы освобождаете ресурсы, занимаемые соединением. Например, для получения страницы по адресу http://developer.alexanderklimov.ru/android/ можно использовать такой код: URL url = new URL("http://developer.alexanderklimov.ru/android/"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); try { InputStream in = new BufferedInputStream(urlConnection.getInputStream()); readStream(in); finally { urlConnection.disconnect(); } } По умолчанию HttpURLConnection использует метод GET. Для использования POST вызывайте setDoOutput(true) и посылайте данные через openOutputStream(). Другие HTTP-методы (OPTIONS, HEAD, PUT, DELETE and TRACE) настраиваются через метод setRequestMethod(String). Для работы через прокси-сервер используйте URL.openConnection(Proxy) при создании соединения. Каждый экземпляр HttpURLConnection может использоваться только для одной пары запроса/ответа. Операции с соединениями следует проводить в отдельном потоке. |