J2ME e http erro na comunição

quando realizo a solicitação para receber dados do servlet, da uma mensagem

Is it OK to use Airtime

Minha Classe wants to send and receive data using the network.
This will use airtime and may result in charges.
Is it OK to use Airtime? NO YES escolho Yes e não acontece nada

Este e meu codigo fonte

/*
 * MidletDuke.java
 *
 * Created on 25 de Maio de 2005, 13:57
 */
/*
 * MidletDuke.java
 *
 * Created on 24 de Maio de 2005, 23:48
 */

 
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.*;

import javax.microedition.midlet.MIDlet;
import javax.microedition.io.HttpConnection;
//import java.lang.Object.*;
import javax.microedition.io.Connector;

import java.io.InputStream;
import java.io.IOException;



/**
 *
 * @author  Luciano Rodrigues
 * @version
 */
public class MidletDuke extends  MIDlet implements  
javax.microedition.lcdui.CommandListener {
    
    private Display display;
    private Form tela;
    private TextField tf;
    private Command cmdEnviar;
    private Command cmdReceber;
    
    public void startApp() {
        display = Display.getDisplay(this);
        montarTelaInicial();
        display.setCurrent(tela);
    }
    public void pauseApp() {
        //métdo chamado na pausa da aplicação
    
    }
    public void destroyApp(boolean unconditional) {
         display.setCurrent(null);
         this.notifyDestroyed();
    }//fim método destroyApp()
    
    private void montarTelaInicial()
    {
           tela      = new Form("HTTP Sender");
           tf        = new TextField("Texto: ",null,20,TextField.ANY);
           cmdEnviar = new Command("Enviar",Command.ITEM,0);
           cmdReceber= new Command("Receber",Command.ITEM,0);
           tela.append(tf);
           tela.addCommand(cmdEnviar);
           tela.addCommand(cmdReceber);
           tela.setCommandListener(this);
    }//fim método montarTelaInicial()
    
    public void commandAction(Command c,Displayable d)
    {
        if(c==cmdEnviar)
        {
            passarInformacaoServlet();
        }else if(c==cmdReceber){
            pegarInformacaoServlet();
        }
    
    }//fim do método CommandAction()
    private void passarInformacaoServlet()
    {
        try
        {
            HttpConnection con = 
                    (HttpConnection)Connector.open(         
"http://localhost:8080/servlets-examples/servlet/DukeServlet?msg=" ); // tf.get String().replace(,+)
         
            int status=-1;
            String situacao="";
            status =con.getResponseCode();
            situacao =(status != HttpConnection.HTTP_OK?"Erro: Conexão":"OK");
            montarTelaInicial();
            tela.append(situacao);
            display.setCurrent(tela);
            
        }catch(IOException e)
        {
        
        }
    }//fim do método passarinformacaoServlet()
    private void pegarInformacaoServlet()
    {
       StringBuffer mensagem = new StringBuffer();
       String situacao="";
       
       
        try
        {
            HttpConnection con =(HttpConnection)Connector.open( "http://localhost:8080/servlets-examples/servlet/DukeServlet?msg=PegarDados");
              // http://localhost:8084/WebApCelular/DukeServlet?msg=PegarDados
            int status=-1;
            status =con.getResponseCode();
            
            if (status == HttpConnection.HTTP_OK)
            {
                InputStream is = con.openInputStream();
                int lido=is.read();
                    lido=is.read();
                    lido=is.read();
                while (lido!=-1)
                {
                    byte b1 = (byte) lido;
                    mensagem.append((char)b1);
                    lido=is.read();
                    
                }
                situacao="OK";
                
            }else {
            
                situacao="Erro:Conexao";
                
                
            }
            
            
        }catch(IOException e)
        {
            situacao="Erro 10";
                   
        }
       montarTelaInicial();
       tf.setString(mensagem.toString());
       tela.append(situacao);
       display.setCurrent(tela);
       
    }// fim do método pegar informação servlet  

    
}//Fim da classe MidletDuke

[size=“11”]
[color=“red”]

  • Editado: Lembre-se de usar BBCode em seus códigos para mantê-los identados e mais legíveis para outros usuários - Matheus[/color][/size] :joia:

Ola luciano,

tenta estabelecer sua conexão http numa classe diferente
q implemente a interface Runnable.

Acho q dah uma exception qdo vc tenta estabelecer
um httpconnection dentro do commandAction

falow;

Isso!

Siga o conselho de nosso amigo pablo! :wink:
Abra a conexao em uma nova thread!

Abraços!

comigo acontece a mesma coisa porem a minha conexão esta sendo feita em outra thread e o aplicativo funciona normal depois que presiona Ok, eu sei que se vc fizer a conexão dentro do actionCommand vai dar o erro:


 Warning: To avoid potential deadlock, operations that may block, such as 
 networking, should be performed in a different thread than the 
 commandAction() handler.

e nao a mensagem que o luciano passou, essa mensagem deve ser somente uma informação que vc esta conectando na rede, mas incomoda eu também não sei como tira isso, que souber explicar por favor…

onde vc setou o tipo de envio?
post ou get
acho que vc esqueceu
[]'s

Acho que respondi isso la no GUJ né!

mas vou colar meu post aqui tbm:

Isso é para as mensagens que aparecem quando manda fazer qqr tipo de conexão e tal.

Abraços!

tinha postado lá tbm valeu pela ajuda

Olá Gostaria de saber se por
acaso conseguiu solucionar o erro que estava dando nesta aplicação
pois estou fazendo uma parecida e na minha dá erro de conecxão.

Sendo que o codigo está ± como o seu da revista do Web Mobile, Exemplo do Duke.

Aguardo Retorno

Att

Cristian

Eu também construi este exemplo da Revista. Esta ocorrendo erro na conexao.

Coloquei a conexão dentro de uma thread e funcionou beleza.

O wireless ToolKit2.2, possui uma pasta de demostrações, e lá tem um exemplo que realiza uma comunicação http, e o mesmo realiza a conexão dentro de uma thread, foi baseado nesta thread que construi o meu e funcionou beleza, Muito Interessante!!

Luciano Rodrigues Portela
Analista de Sistemas
Especialista Objetos Distribuido e Internet - UNB
Tenho Interesse em ir para Brasília