Jornada de Cursos - J2ME Aula 7 – MIDlets conectados Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan Tokuda, Mestre Zen Conexão no MIDP • Subconjunto do J2SE com algumas adaptações • HTTP é a única implementação mandatória • Utiliza a classe Connector para criar as conexões • Connector.Open("protocol:address;parameters"); • Exemplo: • Connector.Open("http://www.some_web_address.com"); • Connector.Open("socket://someaddress:1234"); Estrutura de conexão genérica Conexão HTTP • Protocolo de pedido/resposta • InputStream e OutputStream • • • • Protocolo:endereço;parâmetros Porta paralela, HTTP, HTTPS, Datagrama, etc GET / POST Seta atributos para as requisições InputStream • • • • InputStream openInputStream() read() skip() close() OutputStream • Bastante semelhante a InputStream • write ao invés de read. Exemplo - StreamConnection void 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(); } } Exemplo - HttpConnection • http://www.cin.ufpe.br/~ela/jornada/Exemplos/H ttpLogger.java • http://www.cin.ufpe.br/~ela/jornada/GetPostMID let.java Conexões com sockets • Para alcançar outros celulares -> sockets! • O que é um socket? • Streams • linear • Datagramas • Sem ordem Sockets e o GCF • Implementado pela maioria dos celulares • Rumores de que vai ser standard em MIDP 3.0 SocketConnection • TCP: socket:// • UDP: datagram:// • Mesmo modelo do protocolo HTTP (protocolo:endereço;parametros) • Ex.: • SocketConnection sc = (SocketConnection)Connector.open("socket://127.0 .0.1:5000"); • SocketConnection sc = (SocketConnection)Connector.open("datagram://12 7.0.0.1:5000"); Coletando informação • getAddress() • getPort() • getSocketOption() • Exist eum setSocketOption(): • KEEPALIVE, LINGER, SNDBUF, RCVBUF, or DELAY Lendo e escrevendo • Mesma coisa de HTTP • Via InputStream e OutputStream Referências • Tutoriais da Sun