Upload
mareo
View
18
Download
0
Embed Size (px)
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
Citation preview
GENERIC CONNECTION FRAMEWORKProf. André Assad
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