Generic Connection Framework

Post on 15-Jan-2016

18 views 0 download

description

Generic Connection Framework. Prof. André Assad Andre.Assad@gmail.com. Comunicação de Dados. Meios de comunicação (dispositivos móveis) Infravermelho Rádio TDMA CDMA GSM: GPRS, EDGE, 3G Bluetooth NFC Portas seriais. Comunicação de Dados. - PowerPoint PPT Presentation

Transcript of Generic Connection Framework

GENERIC CONNECTION FRAMEWORKProf. André Assad

Andre.Assad@gmail.com

COMUNICAÇÃO DE DADOS

Meios de comunicação (dispositivos móveis)InfravermelhoRádio

TDMACDMAGSM: GPRS, EDGE, 3G

BluetoothNFCPortas seriais

COMUNICAÇÃO DE DADOS

Protocolos de comunicação (dispositivos móveis)RS-232HTTPSocketSMS

COMUNICAÇÃO DE DADOS

Aplicação HTTP, SSL, SMS...

Apresentação

Sessão

Transporte GPRS, EDGE, ...

Rede

Enlace RS-232, GSM, TDMA...

Físico Interface Serial, ar

INTRODUÇÃO AO GCF

Java.io + java.net: só eles são maiores que os recursos disponíveis de muitos dispositivos móveis

GCF (Generic Connection Framework) A idéia era não implementar um conjunto de

classes completamente novo Devia-se fornecer um sub-conjunto do J2SE

CONEXÃO GENÉRICA

O termo “Genérico” significa algo que atende ou serve para vários fins (obviamente )

Connector Classe para criação de qualquer tipo de conexão Connector.open(“protocolo:endereço;parâmetros

”); Tipos de conexões

HTTP Serial Socket

HTTPSIrDatagrama

SSLFile

ABRINDO UMA CONEXÃO

Exemplos de abertura de conexão:Connector.open(“http://uol.com.br”);Connector.open(“socket://

200.217.158.56”);Connector.open(“file://teste.txt”);Connector.open(“comm:1;baudrate=9600”

);

GCF

GCF é flexível graças ao modo como os protocolos são resolvidos em tempo de execução

A classe Connector procura a classe apropriada que implementa o protocolo solicitado

Essas classes específicas dos protocolos implementam uma interface chamada Connection

Embora a API suporte vários, o único protocolo de comunicação exigido é o HTTP.

GCF - HIERARQUIA

ConnectionConnector

CommConnection

ContentConnection

DatagramaConnection

HttpConnection

HttpsConnection

InputConnection

OutputConnection

SecureConnection

SocketConnection

StreamConnection

UDPConnection

ServerSocketConnection

GCF - API public static final int READ

public static final int WRITE

public static final int READ_WRITE

public static Connection open(String name) throws IOException

public static Connection open(String name, int mode) throws IOException

public static InputStream openInputStream(String name) throws IOException

public static DataInputStream openDataInputStream(String name) throws IOException

public static DataOutputStream openDataOutputStream(String name) throws IOException

public static OutputStream openOutputStream(String name) throws IOException

PROTOCOLO HTTP

É o único protocolo, com certeza, implementado no J2ME

Classe HttpConnection Através desse protocolo, pode-se comunicar

com um servidor web Portabilidade garantida Conhecido como protocolo de pedidos e

respostas

PROTOCOLO HTTP

Cliente HTTP Servidor Web

Pedido

Resposta

PROTOCOLO HTTP

COMANDOS HTTP

Comandos (de solicitação) GET : dados enviados como parte da URL POST : dados enviados em fluxo separado HEADER PUT DELETE

Composição de uma solicitação HTTP: Método do pedido Cabeçalho Corpo

REQUISIÇÃO HTTP

Forma de indicar o método de solicitação do pedido

HttpConnection http = null;http = (HttpConnection) Connector.open(url);http.setRequestMethod(HttpConnection.GET);

CABEÇALHOS HTTP

Configurarando os campos do cabeçalho

HttpConnection http = null;http = (HttpConnection) Connector.open(url);http.setRequestMethod(HttpConnection.GET);

CABEÇALHO HTTP

Lendo o cabeçalho HTTP public String getHeaderField(int n) public String getHeaderField(String name) public String getHeaderFieldKey(int n) public long getDate() public long getExpiration()

STATUS HTTP

Indica o resultado do pedido do cliente Para httpConnection existem mais de 35

códigos de resposta existentes: 1xx – Informação 2xx – Sucesso 3xx – Redirecionamento 4xx – Erros de cliente 5xx – Erros de servidor

Métodos java utilizados http.getResponseMessage(); http.getResponseCode();

EXEMPLO - STREAMCONNECTIONvoid getViaStreamConnection(String url) throws

IOException { StreamConnection c = null;

InputStream s = null; try { c =

(StreamConnection)Connector.open(url); s = c.openInputStream();

int ch; while ((ch = s.read()) != -1) {

... } } finally {

if (s != null) s.close(); if (c != null) c.close();

} }

EXERCÍCIO HTTP

Usando HTTPConnection, desenvolva um MIDLet que deverá fazer um GET na seguinte URL: http://auth.mview.com.br:8081/mview/auth/

LoginForm.do?logon_action=&username=test&password=test

Esta URL retorna SUCCESS para login bem sucedido e ERROR para login mau sucedido

Em caso de login bem sucedido o midlet deverá encaminhar a aplicação para a tela de entrada