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.

testeconexaojme.JPG

A classe do MIDlet, que apenas chama a tela do forma:

Midlet.java
import 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.java
import 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 servidor
        else
            Midlet.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);
                    } else 
                        append(”\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

Este artigo foi escrito por Nelson Pereira Junior.
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.



Receba artigos em seu e-mail

Receba os novos artigos do blog em seu e-mail. E-Mail:



One Comment

  1. Marcos R. Bertuol:

    Muito bom seu artigo!
    Estou 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.

Deixe um comentário

blogarama.com Globe of Blogs EatonWeb Blog Directory