Автор неизвестен - Платформа J2Me
- Название:Платформа J2Me
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Автор неизвестен - Платформа J2Me краткое содержание
Эта книга научит вас, как разрабатывать программное обеспечение для платформы J2ME компании «Sun Microsystems». Эта книга придерживается стиля учебного пособия, это не справочное руководство.
Цель — дать вам твердую основу в понятиях и техниках, которая даст вам возможность решиться на самостоятельную разработку качественных приложений.
Платформа J2Me - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Display.getDisplay(m). setCurrent(view);
thread = new Thread(view); thread.start();
}
else if (c == e\it)
}
ConnectionDemo.getlnstance(). quit();
}
}
}
Листинг 8.3.Класс ResourceDisplay определяет форму, которая отображает ресурс. Он использует объект helper для получения этого ресурса
import javdx.microedition.lcdui.Command;
import javax.microedition.Icdui.CommandListener;
import javax.microedition.Icdui.Form;
import javax.microedition.Icdui.Displayable;
/**
Данный класс задает Form, которая отображает метаинформацию, описывающую HTTP-ресурс. Она контролируется отдельной нитью, поэтому она реализует Runnable.
Этот объект Form использует объект helper для коммуникации с HTTP-ресурсом через Connection. Он затем забирает данные соединения из объекта helper для отображения на экране для пользователя.
public class ResourceDisplay extends Form
implements CommandListener, Runnable
{
private static Command back =
new Command("Back", Command.BACK, 1);
private static Displayable instance;
// Объект helper создает соединение с ресурсом на исходном
// сервере и извлекает метаинформацию ресурса.
// private HttpResource resource;
Конструктор
Sparam uri URI ресурса для извлечения по запросу HTTP протокола.
*/
public ResourceDisplay(String uri)
{
super("Http Info");
instance = this;
resource = new HttpResource(uri);
addCommand(back);
setCommandListener(this);
}
/**
Запускает выполнение данного объекта: запускает объект helper HttpResource.
@смотри. rtpResource
*/
public void run()
{
resource.run();
append(resource.getResourceMetalnfo());
}
/**
Возвращает один экземпляр данного класса.
Вызов этого метода перед созданием объекта возвращает нулевой указатель.
@возвращаем экземпляр данного класса.
*/
public static Displayable getlnstance ()
{
return instance;
{
public void commandAction(Command c, Displayable d)
{
if (c == back)
{
URI Entry, get Instanced.display();
}
}
}
Листинг 8.4.Класс HttpResource определяет объект, который на самом деле извлекает сетевой ресурс
import Java.io.InputStream;
import Java.io.lOException;
import javax.microedition.io.Connect ion;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
import javax.microedition.Icdui.Displayable;
/**
Данный класс определяет объект helper, используемый классом ResourceDisplay. Он создает соединение с ресурсом HTTP, посылает запрос и получает ответ. Он размещает ответную метаинформацию в буфере. Этот класс предоставляет метод, который дает возможность другому объекту получать эту информацию как объект String асинхронно. Этот класс также записывает результат диагностики в стандартный вывод с целью демонстрации.
Результат появится в окне эмулятора J2MEWTK.
Обратите внимание, что этот класс реализует Runnable.
Он может использоваться программой для выполнения работы асинхронно, контролируемый нитью, отличной от основной нити приложения. В данной демонстрации соединения отдельная нить не порождает подпроцесс контролирования данного экземпляра, поскольку экземпляр ResourceDisplay, который использует данный экземпляр, уже контролирует отдельная нить.
**/
public class HttpResource implements Runnable
private static Displayable instance;
// URI, представляющий выбранный ресурс.
private String uri;
// Буфер для поддержки информации ресурса.
private StringBuffer contents = new StringBuffer();
// Соединение с ресурсом. private Connection conn;
// Ссылка на HTTP-соединение, private HttpConnection httpConn;
// Входной поток соединения, private InputStream is;
// Значение поля атрибута статуса HTTP. private int status = -1;
/**
Конструктор.
@pararc uri URI, указывающий выбранный ресурс.
*/
public HttpResource (String uri)
{
super ();
this.uri = uri;
}
private String userAgentID ()
{
StringBuffer buf = new StringBuffer();
String config =
System.get Property("microedition.configuration");
String profile =
System.get Property("microedition.profiles");
buf.append("Configuration/"); buf.append(config); buf.append!" Profile/");
buf.append(profile); return buf. toStrir.g ();)
/**
Запускает данный объект. Соединяется с URI, посылает запрос, получает отклик и анализирует ответное сообщение.
*/
public void run()
System.out.println("Connection class name = " + conn.getClass(). getName ());
connect (); parse ();
System.out.println(gecResourceMetalnfo());
try conn.close();
}
catch (lOException ioe) System.out.println(ioe.getMessage());
ioe.printStackTrace();
}
}
/**
Соединяется с исходным сервером, который поддерживает URI.
Если произошло исключение во время соединения, этот метод Перехватит его и не выдаст указания на ошибку, за исключением Записи в стандартном результате диагностики.
*/
protected void connect!)
}
try
}
while (true)
{
// Соединение находится в состоянии «установка». conn = Connector.open(uri);
httpConn = (HttpConnection) conn;
httpConn.setRequestProperty("method", HttpConnection.HEAD);
httpConn.setRequestProperty("User-Agent", userAgentID());
// Соединение находится в состоянии «установлено». if (resourceRelocated())
{
uri = httpConn.getHeaderField("location");
// Соединение находится в состоянии «отключено» после
// вызова close().
conn.close();
}
else
}
breaX;
*/
if (serverError())
{
conn.close (); return;
}
// Соединение находится в состоянии «установлено», is = httpConn.openlnputStream ();
System.out.println("Input stream class name = " + is.getClassO.get Name ());
int responseCode = httpCcnn.getResponseCode ();
printResponseCode (responseCode); catch (lOExceptior. ioe)
{
contents.append(ioe.getMessage());
System.out.println(ioe.getMessage());
ioe.printStackTrace();
}
}
private boolean resourceRelocated()
{
boolean relocated = false; try
}
status = httpConn.getResponseCode();
if (status == HttpConnection.HTTP_MOVED_TEMP II
status == HttpConnection.HTTP_MOVED_PERM II
status == HttpConnection.HTTP_TEMP_REDIRECT)
{
relocated = true;
}
}
catch (lOException ioe)
}
System.out.println(ioe.getMessage());
ioe.printStackTrace();
}
return relocated;
}
private boolean serverError ()
{
boolean error = false;
try
{
status = httpConn.getResponseCode();
if ((status == HttpConnection.HTTP_NOT_IMPLEMENTED)
If (status == HttpConnection.HTTP_VERSION)
If (status == HttpConnection.HTTP_INTERNAL_ERROR)
If (status = = HttpConnection.HTTP_GATEWAY_TIMEOUT)
If (status == HttpConnection.HTTP_BAD_GATEWAY))
}
error = true; } }
catch (lOException ioe)
{
error = true;
System.out.println(ioe.getMessage());
ioe.printStackTrace();
}
return error;
}
private void parse()
(
if (httpConn == null) return;
String protocol = httpConn.getProtocol();
contents.append("Protocol: " t protocol + "\n");
String type = httpConn.getType();
content's. append ("Type: " + type + "\n");
String encoding = httpConn.getEncoding ();
contents.append("Encoding: " + encoding + "\n");
long length = httpConn.getLength ();
contents.append("Length: " + length + "\n");
String uri = httpConn.getURL();
contents.append("URL: " + uri + "\n");
String host = httpConn.getHost();
contents.append("Host: " + host + "\n");
String query = httpConn.getQuery();
contents.append("Query: " + query + "\n");
String requestMethod = httpConn.getRequestMethod();
contents.append ("Method: " + requestMethod + "\n");
}
private void printResponseCode(int code)
{
System.out.print("Response code:
**/
switch (code) case HttpConnection.HTTP_ACCEPTED:
Systern.out.print In("HTTP_ACCEPTED"); break;
case HttpConnection.HTTP_BAD_GATEWAY:
Systern.out.print In("HTTP_BAD_GATEWAY"); break;
case HttpConnection.HTTP_BAD_METHOD:
Systern.out.print In("HTTP_BAD_METHOD"); break;
'case HttpConnection.HTTP_BAD_REQUEST:
Systern.out.print In("HTTP~BAD_REQUEST"); break;
case HttpCo-.nection.HTTP_CONFLICT:
System.out.println("HTTP_CONFLICT"); break;
case HttpConnection.HTTP_CREATED:
System.out.print In("HTTP_CREATED"); break;
case HttpConnection.HTTP_FORBIDDEN:
System.out.print In("HTTP_BAD_FORBIDDEN"); break;
case HttpConnection.HTTP_GATEWAY_TIMEOUT:
System.out.print In("HTTP_GATEWAY_TIMEOUT"); break;
case HttpConnection.HTTP_GONE:
Systern.out.print In("HTTP_GONE"); break;
case HttpConnection.HTTP_NO_CONTENT:
System.out.println("HTTP_NO_CONTENT"); break;
case HttpConnection.HTTP_NOT_ACCEPTABLE:
Systern.out.print In("HTTP_NOT_ACCEPTABLE"); break;
case HttpConnection.HTTP_NOT_FOUND:
System.out.print In("HTTP~NOT_FOUND"); break;
case HttpConnection.HTTP_OK:
System.out.println("HTTP_OK"); break;
case HttpConnection.HTTP_PROXY_AUTH:
Systern.out.print In("HTTP_PROXY_AUTH"); break;
case HttpConnection.HTTP_UNAVAILABLE:
Читать дальшеИнтервал:
Закладка: