Языки программирования
<<  Язык программирование Pascal ABC Java 2 Micro Edition  >>
Java 2 Micro Edition
Java 2 Micro Edition
Mobile Information Device Profile (MIDP)
Mobile Information Device Profile (MIDP)
Системные функции
Системные функции
Системные свойства
Системные свойства
Файлы ресурсов приложения
Файлы ресурсов приложения
Таймеры
Таймеры
Таймеры
Таймеры
Таймеры
Таймеры
Таймеры
Таймеры
java
java
java
java
java
java
java
java
java
java
Хранение данных
Хранение данных
Хранилище записей
Хранилище записей
Хранилище записей
Хранилище записей
Хранилище записей
Хранилище записей
javax
javax
javax
javax
javax
javax
javax
javax
Записи
Записи
Записи
Записи
Записи
Записи
javax
javax
javax
javax
javax
javax
Навигация по записям
Навигация по записям
Навигация по записям
Навигация по записям
Навигация по записям
Навигация по записям
Фильтры записей
Фильтры записей
Сортировка записей
Сортировка записей
RecordEnumeration
RecordEnumeration
RecordEnumeration
RecordEnumeration
RecordEnumeration
RecordEnumeration
Приемник записей
Приемник записей
Интерфейс RecordListener
Интерфейс RecordListener
Сетевые средства
Сетевые средства
Сетевые средства
Сетевые средства
Соединения HTTP
Соединения HTTP
Соединения HTTP
Соединения HTTP
Соединения HTTP
Соединения HTTP
Соединения HTTP
Соединения HTTP
Интерфейс HttpConnection
Интерфейс HttpConnection
Интерфейс HttpConnection
Интерфейс HttpConnection
Интерфейс HttpConnection
Интерфейс HttpConnection
Интерфейс HttpConnection
Интерфейс HttpConnection
Интерфейс HttpConnection
Интерфейс HttpConnection
Интерфейс HttpConnection
Интерфейс HttpConnection
Примеры использования
Примеры использования
Использование StreamConnection
Использование StreamConnection
Использование StreamConnection
Использование StreamConnection
Использование ContentConnection
Использование ContentConnection
Использование ContentConnection
Использование ContentConnection
Использование ContentConnection
Использование ContentConnection
Использование HttpConnection
Использование HttpConnection
Использование HttpConnection
Использование HttpConnection
Использование HttpConnection
Использование HttpConnection
Использование HttpConnection
Использование HttpConnection
Передача данных в по методу POST
Передача данных в по методу POST
Передача данных в по методу POST
Передача данных в по методу POST
Передача данных в по методу POST
Передача данных в по методу POST
Передача данных в по методу POST
Передача данных в по методу POST
Передача данных в по методу POST
Передача данных в по методу POST
Передача данных в по методу POST
Передача данных в по методу POST

Презентация на тему: «Java 2 Micro Edition». Автор: Сергей Жерздев. Файл: «Java 2 Micro Edition.ppt». Размер zip-архива: 54 КБ.

Java 2 Micro Edition

содержание презентации «Java 2 Micro Edition.ppt»
СлайдТекст
1 Java 2 Micro Edition

Java 2 Micro Edition

Технология Java

Лаборатория информационных технологий (ИТЛаб)

Проект ТЭЛМА

Жерздев С.В.

При поддержке фирмы Intel?

1 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

2 Mobile Information Device Profile (MIDP)

Mobile Information Device Profile (MIDP)

Часть 3

2 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

3 Системные функции

Системные функции

3 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

4 Системные свойства

Системные свойства

MIDP определяет следующие дополнительные значения свойств, которые должны быть доступные приложению с использованием метода java.lang.System.getProperty: microedition.locale Текущая локализация устройства (null по умолчанию). Состоит из кода языка (ISO-639) и кода страны (ISO-3166), разделенных дефисом. Например, "en-US". microedition.profiles Версия профиля. Должно быть по крайней мере "MIDP-1.0"

4 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

5 Файлы ресурсов приложения

Файлы ресурсов приложения

Файлы ресурсов приложения доступны с использованием метода getResourceAsStream(String name) класса java.lang.Class. Применительно к MIDP подразумевается, что ресурсные файлы находятся в jar-файле комплекта. Выход из приложения Завершение приложения должно осуществляться вызовом метода MIDlet.notifyDestroyed. Применение методов java.lang.System.exit и java.lang.Runtime.exit приведет к возбуждению исключения java.lang.SecurityException.

5 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

6 Таймеры

Таймеры

Для организации задержек и расписаний приложение MIDP может использовать механизм таймеров с применением классов java.util.Timer и java.util.TimerTask. Класс Timer обеспечивает средство создания отсроченных заданий для последующего выполнения в фоновом потоке. Задачи могут быть установлены на однократное или периодическое выполнение.

6 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

7 Таймеры

Таймеры

Каждому объекту Timer соответствует один фоновый поток, который используется для последовательного выполнения всех задач этого таймера. Как следствие, задачи таймера должны завершаться достаточно быстро, для длительных действий они должны создавать вспомогательный поток, иначе может быть задержано выполнение последующих задач в очереди таймера.

7 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

8 Таймеры

Таймеры

После уничтожения всех ссылок на объект Timer и выполнения всех задач, поток таймера завершается. Однако, это может потребовать существенного времени и, возможно, препятствовать завершению приложения. Для предотвращения таких ситуаций, следует использовать метод cancel(). Если выполнение потока таймера было неожиданно прервано, например, вызовом метода stop(), последующие попытки поставить задачу на таймер вызовут исключение IllegalStateException.

8 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

9 Таймеры

Таймеры

Класс Timer приспособлен для работы в многопоточных приложениях и использование одного такого объекта из разных потоков не требует дополнительной синхронизации. Этот класс не дает гарантий реального времени; таймер функционирует только в рамках виртуальной машины и отменяется при выходе из нее, между запусками виртуальной машины таймеры не сохраняются.

9 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

10 java

java

util.Timer

public void cancel () Уничтожает таймер, отменяя все задания. Не влияет на уже выполняющееся задание, если оно есть. После уничтожения таймера его поток также уничтожается и дальнейшая постановка задач в расписание невозможна. public void schedule (TimerTask task, Date time) public void schedule (TimerTask task, long delay) Помещает заданную задачу на исполнение в заданное время или с заданной отсрочкой. Если указанное время уже прошло, задача ставится на немедленное исполнение.

10 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

11 java

java

util.Timer

public void schedule (TimerTask task, Date firstTime, long period) public void schedule (TimerTask task, long delay, long period) Ставит задачу на периодическое выполнение с указанного времени с заданным интервалом. Каждое выполнение будет отсрочено на заданное количество миллисекунд от реального времени предыдущего выполнения. Таким образом, более точно выдерживаются относительные интервалы, а не абсолютное время выполнения.

11 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

12 java

java

util.Timer

public void scheduleAtFixedRate (TimerTask task, Date firstTime, long period) public void scheduleAtFixedRate (TimerTask task, long delay, long period) Аналогично предыдущей группе методов, но выполнение будет происходить с приоритетом абсолютной привязки по времени (и, как следствие, общего времени для фиксированного числа запусков), независимо от фактического времени предыдущего выполнения, возможно, с нарушением длительности интервалов.

12 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

13 java

java

util.TimerTask

Класс TimerTask реализует интерфейс Runnable и представляет задачу, выполняемую по таймеру. public boolean cancel () Отменяет данную задачу таймера. Если в момент вызова задача уже выполняется, то это выполнение будет доведено до конца, но последующих не будет. Возвращает false, если задача была поставлена на однократное выполнение и уже выполняется, или не была поставлена на выполнение, или уже отменена.

13 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

14 java

java

util.TimerTask

public abstract void run () Этот метод предусмотрен интерфейсом Runnable. public long scheduledExecutionTime () Возвращает запланированное время последнего (возможно, текущего) запуска задачи на выполнение. Может быть использован для проверки "отставания от графика": public void run() { if (System.currentTimeMillis() - scheduledExecutionTime() >= MAX_TARDINESS) return; // Слишком поздно, отменить. … }

14 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

15 Хранение данных

Хранение данных

MIDP обеспечивает механизм постоянного хранения данных и их последующего получения приложением, который называется Record Management System (RMS). Этот механизм построен как простая, ориентированная на записи, база данных.

15 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

16 Хранилище записей

Хранилище записей

Хранилище записей состоит из наборов записей, которые сохраняются между запусками приложений. Платформа должна обеспечивать целостность этих данных при использовании устройства, его выключении, перезагрузке, смене батарей и т.д. В приложении хранилище записей представляется объектом класса javax.microedition.rms.RecordStore. Его методы обеспечивают манипуляцию отдельными записями и хранилищами.

16 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

17 Хранилище записей

Хранилище записей

Пространство имен хранилища записей управляется на уровне комплектов мидлетов. Мидлеты в комплекте могут создавать несколько хранилищ записей, различаемых по именам. API обеспечивает доступ только к хранилищам данного комплекта мидлетов. При удалении комплекта мидлетов с устройства все соответствующие записи также удаляются. Имена хранилищ записей - до 32 Unicode-символов, чувствительны к регистру.

17 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

18 Хранилище записей

Хранилище записей

Операции блокирования хранилища не предусмотрены. Реализация хранилища обеспечивает атомарность, синхронность и последовательное выполнение отдельных операций над хранилищем, что обеспечивает целостность данных при множественном доступе. Тем не менее, координация последовательных операций при использовании многопоточных приложений должна обеспечиваться приложением.

18 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

19 javax

javax

microedition.rms.RecordStore

public static String[] listRecordStores () Возвращает массив имен хранилищ записей, доступных из этого комплекта мидлетов. Возвращает null, если данный комплект не имеет хранилищ. public static RecordStore openRecordStore (String rSName, boolean createIfNeed) Открывает (и, возможно, создает) хранилище записей для комплекта мидлетов. Если хранилище уже открыто, будет возвращен ссылка на тот же объект RecordStore.

19 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

20 javax

javax

microedition.rms.RecordStore

public void closeRecordStore () Запрос на закрытие хранилища. Для фактического закрытия хранилища необходимо вызвать этот метод столько же раз, сколько и openRecordStore(). public static void deleteRecordStore (String recordStoreName) Удаляет хранилище записей по его имени. Если хранилище открыто или отсутствует, будет выброшено исключение. public String getName () Возвращает имя этого хранилища.

20 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

21 javax

javax

microedition.rms.RecordStore

Каждое хранилище записей имеет временную метку - время последней модификации хранилища. Кроме того, хранилище имеет версию - целое число, которое увеличивается при каждой операции, изменяющей содержимое хранилища. public long getLastModified () Возвращает время последней модификации хранилища в формате System.currentTimeMillis(). public int getVersion () Версия хранилища записей.

21 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

22 javax

javax

microedition.rms.RecordStore

public int getSize () Возвращает объем (в байтах), занимаемый хранилищем, включая вспомогательные системные данные. public int getSizeAvailable () Возвращает объем свободной памяти, доступной этому хранилищу.

22 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

23 Записи

Записи

Записи рассматриваются как массивы байт. Можно использовать DataOutputStream, ByteArrayOutputStream для упаковки byte rec[]; ByteArrayOutputStream os = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(os); dos.writeUTF(name); dos.writeInt(score); dos.close(); rec = os.toByteArray();

23 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

24 Записи

Записи

...И datainputstream, bytearrayinputstream для распаковки различных типов данных в массивы байт: byte rec[]; rec = getrecord(i); datainputstream dis = new datainputstream(new bytearrayinputstream(rec)); name = dis.Readutf(); score = dis.Readint();

24 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

25 Записи

Записи

Записи в рамках хранилища записей могут быть однозначно идентифицированы их целочисленным recordId, который играет роль первичного ключа записей. Значения recordId образуют непрерывную последовательность целых, начиная с 1, в порядке создания записей. Для манипуляции записями используются методы класса RecordStore.

25 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

26 javax

javax

microedition.rms.RecordStore

public int getNumRecords () Возвращает число записей в хранилище. public int addRecord (byte[] data, int offset, int numBytes) Добавляет новую запись в хранилище из массива байт (с заданным смещением и длиной). Возвращает recordId для этой новой записи. Операция является атомарной, метод блокирующий (возвращает управление только после действительного занесения данных в хранилище).

26 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

27 javax

javax

microedition.rms.RecordStore

public int getRecordSize (int recordId) Возвращает длину (в байтах) данных конкретной записи. public byte[] getRecord (int recordId) Возвращает копию данных данной записи. Возвращает null для пустых записей. public int getRecord (int recordId, byte[] buffer, int offset) Читает данные записи в определенное место массива байт, возвращает длину прочитанных данных.

27 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

28 javax

javax

microedition.rms.RecordStore

public int getNextRecordID () Возвращает recordId следующей записи, которая будет добавлена к хранилищу. public void setRecord (int recordId, byte[] newData, int offset, int numBytes) Записывает данные указанной записи. Метод блокирующий. public void deleteRecord (int recordId) Удаление записи из хранилища. Освободившийся recordId не будет использован повторно.

28 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

29 Навигация по записям

Навигация по записям

Мидлет может создать другие индексы для навигации по записям с использованием класса, реализующего интерфейс RecordEnumeration. public RecordEnumeration enumerateRecords (RecordFilter filter, RecordComparator comparator, boolean keepUpdated) Возвращает перечисление для навигации по множеству записей хранилища в определенном порядке. Параметр filter определяет используемое подмножество записей, а comparator - порядок записей в возвращаемом перечислении.

29 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

30 Навигация по записям

Навигация по записям

Если оба эти параметра (filter и comparator) - null, перечисление будет содержать все записи хранилища в неопределенном порядке. Это самый эффективный способ навигации по записям хранилища. Возвращаемое значение - объект, который реализует интерфейс RecordEnumeration и обеспечивает двунаправленную навигацию по заданному подмножеству записей в заданном порядке.

30 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

31 Навигация по записям

Навигация по записям

Если параметр keepUpdated установлен в true, содержимое перечисления будет автоматически отслеживать все изменения в хранилище записей. Использование этого режима может существенно повлиять на производительность. В противном случае перечисление не обновляется и может вернуть recordId для удаленных записей или пропустить вновь добавленные. Проверить и изменить этот режим можно и после создания перечисления.

31 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

32 Фильтры записей

Фильтры записей

Объект, реализующий интерфейс RecordFilter, должен определить метод проверки записи на соответствие необходимому условию public boolean matches (byte[] candidate) В подмножество попадут те записи, для которых этот метод вернет true.

32 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

33 Сортировка записей

Сортировка записей

Объект, реализующий интерфейс RecordComparator, должен определить метод для сравнения двух записей public int compare (byte[] rec1, byte[] rec2) Метод должен вернуть RecordComparator.PRECEDES, если rec1 предшествует rec2 в задаваемом порядке сортировки, RecordComparator.FOLLOWS, если rec1 следует за rec2 или RecordComparator.EQUIVALENT, если эти записи эквивалентны с точки зрения порядка сортировки.

33 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

34 RecordEnumeration

RecordEnumeration

Первый вызов RecordEnumeration.nextRecord() возвращает данные первой записи последовательности, следующие вызовы - данные последующих записей. Метод previousRecord() возвращает предыдущие записи. Так, вызов его сразу после создания перечисления вернет последнюю запись. Можно получать доступ не к данным, а к recordId соответствующих записей с помощью методов nextRecordId() и previousRecordId().

34 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

35 RecordEnumeration

RecordEnumeration

public boolean isKeptUpdated () public void keepUpdated (boolean keepUpdated) Проверка и установка режима слежения public void destroy () Освобождает ресурсы, используемые этим RecordEnumeration. Следует вызывать этот метод, когда закончена работа с объектом. public boolean hasNextElement () public boolean hasPreviousElement () Проверяет наличие элементов в указанном порядке обхода.

35 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

36 RecordEnumeration

RecordEnumeration

public int numRecords () Возвращает число элементов в перечислении. Вызов этого метода может потребовать существенного времени, поскольку требует применения проверки фильтром всех записей хранилища. public void rebuild () Запрашивает обновление перечисления для отражения текущего множества записей. public void reset () Устанавливает индекс текущего элемента в перечислении в исходное значение.

36 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

37 Приемник записей

Приемник записей

Для получения событий о создании/изменении/удалении записей в хранилище можно использовать приемник записей - класс, реализующий интерфейс RecordListener. Зарегистрировать его для объекта хранилища можно с помощью метода хранилища. public void addRecordListener (RecordListener listener) При закрытии хранилища приемники удаляются. Можно это сделать и явно. public void removeRecordListener (RecordListener listener)

37 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

38 Интерфейс RecordListener

Интерфейс RecordListener

Интерфейс предполагает реализацию следующих методов-обработчиков событий: public void recordAdded (RecordStore recordStore, int recordId) public void recordChanged (RecordStore recordStore, int recordId) public void recordDeleted (RecordStore recordStore, int recordId) Все они вызываются после выполнения соответствующих операций и при обращении к хранилищу получат доступ к обновленной версии.

38 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

39 Сетевые средства

Сетевые средства

39 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

40 Сетевые средства

Сетевые средства

Профиль MIDP расширяет поддержку сетевых соединений, предоставляемую конфигурацией CLDC. MIDP поддерживает подмножество протокола HTTP, который может быть реализован как поверх протоколов стека TCP/IP, так и поверх других протоколов, например WAP, с использованием шлюзов для доступа к HTTP-серверам в Internet Кроме того, GenericConnection framework используется для организации соединений клиент-сервер и датаграмных соединений. Однако, стандартом гарантируется только реализация в рамках MIDP протокола HTTP 1.1.

40 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

41 Соединения HTTP

Соединения HTTP

Интерфейс javax.microedition.io.HttpConnection расширяет интерфейсы CLDC Connection, ContentConnection, InputConnection, OutputConnection, StreamConnection и обеспечивает дополнительную функциональность, необходимую для создания заголовков запросов HTTP, разбора заголовков ответов и выполнения других функций протокола.

41 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

42 Соединения HTTP

Соединения HTTP

HTTP является протоколом запрос-ответ и соединение может находиться в одном из трех состояний: установка (setup), в котором соединение с сервером не установлено и идет формирование параметров запроса; соединено (connected), в котором установлено соединение, запрос передан серверу и ожидается ответ; закрыто (closed), в котором получен ответ сервера и соединение завершено.

42 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

43 Соединения HTTP

Соединения HTTP

В состоянии установки могут быть вызваны только методы setRequestMethod и setRequestProperty для указания типа запроса и заголовков запроса соответственно. переход из состояния установки в состояние соединения производится любым методом, который требует передачи или получения данных с сервера. Пока соединение открыто, могут использоваться методы close, getRequestMethod, getRequestProperty, getURL, getProtocol, getHost, getFile, getRef, getPort, getQuery.

43 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

44 Соединения HTTP

Соединения HTTP

Все реализации должны поддерживать запросы HEAD, GET и POST, как это описано в RFC2616. Реализация должна обеспечивать передачу всех заголовков запросов и ответов, возможно, изменяя их порядок. Реализация не создает заголовков HTTP-запросов автоматически, это должно делать приложение. Например, параметры клиента следует получать из системных свойств java.lang.System.getProperty() и они могут иметь вид: User-Agent: Profile/MIDP-1.0 Configuration/CLDC-1.0 Content-Language: en-US

44 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

45 Интерфейс HttpConnection

Интерфейс HttpConnection

Интерфейс HttpConnection в дополнение к унаследованным определяет следующие константы и методы. public static final String GET public static final String HEAD public static final String POST Определяют доступные виды HTTP-запросов.

45 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

46 Интерфейс HttpConnection

Интерфейс HttpConnection

public static final int HTTP_OK public static final int HTTP_ACCEPTED public static final int HTTP_BAD_GATEWAY … public static final int HTTP_VERSION Коды HTTP-ответов на запросы. public void setRequestMethod (String method) public String getRequestMethod () Устанавливает/читает вид запроса, т.е. HEAD, GET, POST. Значение по умолчанию GET.

46 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

47 Интерфейс HttpConnection

Интерфейс HttpConnection

public void setRequestProperty (String key, String value) public String getRequestProperty (String key) Устанавливает/читает значения заголовков запроса. public int getResponseCode () public String getResponseMessage () Возвращает код статуса или сообщение HTTP-ответа (например, 200 или "OK" соответственно).

47 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

48 Интерфейс HttpConnection

Интерфейс HttpConnection

public long getDate () public long getExpiration () public String getFile () public long getLastModified () Методы возвращают значения некоторых заголовков HTTP-ответов в виде значений соответствующих типов.

48 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

49 Интерфейс HttpConnection

Интерфейс HttpConnection

public String getHeaderFieldKey (int n) public String getHeaderField (int n) public String getHeaderField (String name) public long getHeaderFieldDate (String name, long def) public int getHeaderFieldInt (String name, int def) Методы возвращают значения заголовков HTTP-ответов, в том числе по их порядковому номеру (по номеру можно получить и имя заголовка) или имени, в виде строкового значения или после разбора в заданный тип.

49 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

50 Интерфейс HttpConnection

Интерфейс HttpConnection

public String getHost () public int getPort () public String getProtocol () Возвращают имя или IP-адрес хоста соединения, его порт и используемый протокол (http или https). public String getURL () Возвращает строковое представление URL для данного соединения. public String getQuery () Возвращают запросную часть URL (текст после последнего знака вопроса).

50 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

51 Примеры использования

Примеры использования

51 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

52 Использование StreamConnection

Использование StreamConnection

void getViaStreamConnection(String url) throws IOException { StreamConnection c = null; InputStream s = null; try { c = (StreamConnection)Connector.open(url); s = c.openInputStream(); …

52 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

53 Использование StreamConnection

Использование StreamConnection

… int ch; while ((ch = s.read()) != -1) { … } } finally { if (s != null) s.close(); if (c != null) c.close(); } }

53 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

54 Использование ContentConnection

Использование ContentConnection

void getViaContentConnection(String url) throws IOException { ContentConnection c = null; InputStream is = null; try { c = (ContentConnection)Connector.open(url); …

54 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

55 Использование ContentConnection

Использование ContentConnection

… int len = (int)c.getLength(); if(len > 0){ is = c.openInputStream(); byte[] data = new byte[len]; int actual = is.read(data); ... } else { int ch; while ((ch = is.read()) != -1) { ... } }

55 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

56 Использование ContentConnection

Использование ContentConnection

… } finally { if (is != null) is.close(); if (c != null) c.close(); } }

56 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

57 Использование HttpConnection

Использование HttpConnection

void getViaHttpConnection(String url) throws IOException { HttpConnection c = null; InputStream is = null; try { c = (HttpConnection)Connector.open(url); …

57 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

58 Использование HttpConnection

Использование HttpConnection

… // Getting the InputStream will open // the connection and read the HTTP headers. // They are stored until requested. is = c.openInputStream(); // Get the ContentType String type = c.getType(); // Get the length… int len = (int)c.getLength();

58 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

59 Использование HttpConnection

Использование HttpConnection

// … and process the data if(len > 0) { byte[] data = new byte[len]; int actual = is.read(data); … } else { int ch; while ((ch = is.read()) != -1) { … } } …

59 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

60 Использование HttpConnection

Использование HttpConnection

} finally { if (is != null) is.close(); if (c != null) c.close(); } } При использовании интерфейса HttpConnection можно обеспечить и чтение заголовков данных (автор, время последнего изменения, срок действия документа и т.д.)

60 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

61 Передача данных в по методу POST

Передача данных в по методу POST

void postViaHttpConnection(String url) throws IOException { HttpConnection c = null; InputStream is = null; OutputStream os = null; try { c = (HttpConnection)Connector.open(url); …

61 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

62 Передача данных в по методу POST

Передача данных в по методу POST

… // Set the request method and headers c.setRequestMethod(HttpConnection.POST); c.setRequestProperty("If-Modified-Since", "29 Oct 1999 19:43:31 GMT"); c.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0"); c.setRequestProperty("Content-Language", "en-US"); …

62 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

63 Передача данных в по методу POST

Передача данных в по методу POST

… // Getting the output stream may flush the headers os = c.openOutputStream(); os.write("LIST games\n".getBytes()); os.flush(); // Optional, openInputStream will flush // Opening the InputStream will open // the connection and read the HTTP headers. // They are stored until requested. is = c.openInputStream(); …

63 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

64 Передача данных в по методу POST

Передача данных в по методу POST

… // Get the ContentType String type = c.getType(); processType(type); // Get the length… int len = (int)c.getLength(); …

64 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

65 Передача данных в по методу POST

Передача данных в по методу POST

… // … and process the data if(len > 0){ byte[] data = new byte[len]; int actual = is.read(data); process(data); } else { int ch; while ((ch = is.read()) != -1) { process((byte)ch); } } …

65 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

66 Передача данных в по методу POST

Передача данных в по методу POST

… } finally { if (is != null) is.close(); if (os != null) os.close(); if (c != null) c.close(); } }

66 (с) ИТЛаб, ННГУ, ВМК, 2003г Java 2 Micro Edition Жерздев С.В.

«Java 2 Micro Edition»
http://900igr.net/prezentacija/informatika/java-2-micro-edition-256806.html
cсылка на страницу
Урок

Информатика

130 тем
Слайды