generic connection framework

20
GENERIC CONNECTION FRAMEWORK Prof. André Assad [email protected]

Upload: mareo

Post on 15-Jan-2016

18 views

Category:

Documents


0 download

DESCRIPTION

Generic Connection Framework. Prof. André Assad [email protected]. 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

Page 1: Generic  Connection  Framework

GENERIC CONNECTION FRAMEWORKProf. André Assad

[email protected]

Page 2: Generic  Connection  Framework

COMUNICAÇÃO DE DADOS

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

TDMACDMAGSM: GPRS, EDGE, 3G

BluetoothNFCPortas seriais

Page 3: Generic  Connection  Framework

COMUNICAÇÃO DE DADOS

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

Page 4: Generic  Connection  Framework

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

Page 5: Generic  Connection  Framework

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

Page 6: Generic  Connection  Framework

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

Page 7: Generic  Connection  Framework

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”

);

Page 8: Generic  Connection  Framework

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.

Page 9: Generic  Connection  Framework

GCF - HIERARQUIA

ConnectionConnector

CommConnection

ContentConnection

DatagramaConnection

HttpConnection

HttpsConnection

InputConnection

OutputConnection

SecureConnection

SocketConnection

StreamConnection

UDPConnection

ServerSocketConnection

Page 10: Generic  Connection  Framework

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

Page 11: Generic  Connection  Framework

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

Page 12: Generic  Connection  Framework

PROTOCOLO HTTP

Cliente HTTP Servidor Web

Pedido

Resposta

Page 13: Generic  Connection  Framework

PROTOCOLO HTTP

Page 14: Generic  Connection  Framework

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

Page 15: Generic  Connection  Framework

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);

Page 16: Generic  Connection  Framework

CABEÇALHOS HTTP

Configurarando os campos do cabeçalho

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

Page 17: Generic  Connection  Framework

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()

Page 18: Generic  Connection  Framework

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();

Page 19: Generic  Connection  Framework

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();

} }

Page 20: Generic  Connection  Framework

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