Exemplo Completo e Simples de Conexão HTTP em JME
Já havia feito um post, há alguns meses, mostrando como fazer conexões HTTP em JME de forma bastante completa. Mas em muitos casos as pessoas só querem aprender o conceito, como fazer de forma simples. Abaixo segue 2 classes, a classe do MIDlet e a classe do Form. O Form mostra um comando para iniciar a conexão e a conexão é feita, mostrando um log da conexão na tela, e a resposta do servidor na tela.
Veja a tela da aplicação de exemplo. Abaixo seguem as 2 classes, e no final do post está um link para baixar o projeto do exemplo e abrir em seu NetBeans 6.1.
A classe do MIDlet, que apenas chama a tela do forma:
Midlet.javaimport javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class Midlet extends MIDlet { static Midlet midlet; public void startApp() { midlet = this; Display.getDisplay(this).setCurrent(new Tela()); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }
A classe da tela que é usada apenas para mostrar o LOG e a resposta do servidor:
Tela.javaimport java.io.ByteArrayOutputStream;import java.io.InputStream;import javax.microedition.io.Connector;import javax.microedition.io.HttpConnection;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;class Tela extends Form implements CommandListener {public Tela() {super(”Status”);addCommand(new Command(”Conectar”, Command.OK, 0));addCommand(new Command(”Sair”, Command.EXIT, 0));setCommandListener(this);append(”\nClique em conectar.”);}public void commandAction(Command comando, Displayable tela) {if (comando.getPriority() == 0)conectar(); //Faz a requisicao ao servidorelseMidlet.midlet.notifyDestroyed(); //Sai da aplicacao}private void conectar() {append(”\nCriando Thread…”);new Thread(new Runnable() {public void run() {append(”\nConectando…”);String url = “http://devmobile.blog.br/testeconexao.php”;HttpConnection http = null;InputStream inStream = null;try {http = (HttpConnection) Connector.open(url, Connector.READ_WRITE, true);append(”\nConexão criada!”);http.setRequestMethod(HttpConnection.GET);http.setRequestProperty(”Connection”, “close”);append(”\nPegando resposta…”);int rc = http.getResponseCode();append(”\nResposta: ” + rc);if (rc == HttpConnection.HTTP_OK) {inStream = http.openInputStream();append(”\nInputStream aberta”);byte[] data = new byte[512];int count;ByteArrayOutputStream returnData = new ByteArrayOutputStream();while ((count = inStream.read(data)) > -1)if (count > 0)returnData.write(data, 0, count);String respStr = new String(returnData.toByteArray());returnData.close();append(”\nRESPOSTA: ” + respStr);} elseappend(”\nErro ” + rc + ” na resposta do servidor: ” + http.getResponseMessage() + “.”);} catch (Exception e) {append(”\nException: ” + e.getMessage());}try { inStream.close(); } catch (Exception e) {}try { http.close(); } catch (Exception e) {}append(”\nFinalizado!”);}}).start();} }
Baixe aqui o projeto de exemplo de conexão HTTP em JME testeget.zip. Descompacte e abra o projeto no NetBeans.
Bons códigos!
Sobre o Autor
Nelson é desenvolvedor há 12 anos. Hoje desenvolve aplicações Web e Móveis na Abacomm Brasil cuidando do desenvolvimento server-side J2EE, banco de dados, design de aplicações móveis, e desenvolvimento móvel usando várias plataformas como BlackBerry, J2ME, FlashLite, Android, etc. Para conversar com o autor use o e-mail, MSN e GTalk npereirajr@gmail.com.

Marcos R. Bertuol:
Muito bom seu artigo!
19 Novembro 2008, 4:30 amEstou desenvolvendo uma aplicação J2ME para uma matéria da faculdade e estou com um problema.
Tenho um método que retorna um Vector e preciso pegar os dados por http. Com seu artigo consegui pegar esses dados, mas não consigo retornar no método. Teria alguma solução ?
Meu msn é este mesmo, caso se interesse em me ajudar.
Grato! Marcos.
Rodolfo Ramos:
Olá,
Muito bom esse artigo, mas tem um problema. No emulador funciona corretamente, mas quando rodo o aplicativo no meu nokia 5130 não funciona. Ele abre a conexão mas para no pegando resposta.
Tem idéia do pode ser?
28 Julho 2010, 12:54 pm