Problemas com HttpConnector

4 respostas
V

Olá pessoal,

Estou construindo uma aplicação para acesso à uma página criada por mim no endereço:

http://127.0.0.1:8080/jsp-examples/jsp2/ListaItens.jsp

Meu código segue abaixo:

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.io.*;
import java.io.*;

public class ChamadaHTTP extends MIDlet implements CommandListener{
    Display tela;
    List registros, result;
    Command sair, listar, voltar;
    String url = "http://127.0.0.1:8080/jsp-examples/jsp2/ListaItens.jsp";

    public ChamadaHTTP(){
        sair = new Command("Sair", Command.EXIT, 0);
        listar = new Command("Listar", Command.SCREEN, 1);
        voltar = new Command("Voltar", Command.SCREEN, 2);

        registros = new List("Clientes", List.IMPLICIT);
        registros.addCommand(sair);
        registros.addCommand(listar);
        registros.setCommandListener(this);
    }

    public void startApp(){
        tela = Display.getDisplay(this);
        tela.setCurrent(registros);
    }

    public void pauseApp(){}

    public void destroyApp(boolean b){}

    public void commandAction(Command c, Displayable d){
        if (c == sair){
           destroyApp(true);
           notifyDestroyed();
        }
        if (c == listar){
           conecta(registros);
        }
        if (c == voltar){
           int tamanho = result.size();
           for (int i = 0; i < tamanho; i++)
               result.delete(i);
           tela.setCurrent(registros);

        }
    }

    public void conecta(List lista){
        try{
            HttpConnection con = (HttpConnection) Connector.open(url);
            int status = -1;
            status = con.getResponseCode();
            if (status == HttpConnection.HTTP_OK){
               System.out.println("AQUI");
               InputStream is = con.openInputStream();
               StringBuffer sb = new StringBuffer();

               int lido = is.read();

               while(lido != -1){
                    byte b1 = (byte)lido;

                    if (b1 == (byte)'\n'){
                       lista.append(sb.toString(),null);
                       sb.setLength(0);
                    } else{
                      sb.append((char)b1);
                    }
                    lido = is.read();
                }
            } else {
              lista.append("Nenhum registro", null);
            }
        } catch(IOException io){System.out.println(io);};
    }
}

Ele compila normalmente e quando executo, aparece a mensagem abaixo:

HttpCalling wants to send and receive data using the network. This will use airtime and may result in charges. Is it OK to use airtime?

Eu clico Yes e nada acontece... O que preciso fazer para que minha aplicação acesse realmente a página Http???

Estou usando WTK21, MIDP 1.0 e rodando tudo em XP.

Obrigado pela ajuda.

--
Clayton

4 Respostas

C

Olá,
Vc deve fazer a conexão em outra Thread!
Basta implementar Runnable

E adicionar o método:

Dentro do run vc faz a conexao!!!

Ai some o problema!

Até mais!

V

Olá,

Vc teria um exemplo para me mandar implementando este tipo de conexão em uma thread separada???

Meu e-mail é [email removido]

Obrigado pela resposta.


Clayton

C

Olá,
No próprio WTK 2.1 ou superior tem um “NetworkDemo” verifica esse!!!

Até mais!

V

Olá,

Separei a função de conexão em um thread e rodou perfeitamente. Obrigado pela dica.

Abraços.


Clayton

Criado 19 de setembro de 2004
Ultima resposta 22 de set. de 2004
Respostas 4
Participantes 2