Thread + Conexão HTTP

Boa noite pessoal,

estou desenvolvendo uma aplicação que se conecta em um Servlet e recebe um String. Até aí tudo bem, porém quando o sistema retorna o que pesquiso não aparece na tela, e somente consigo visualizar quando volto e entro novamente na tela.
Gostaria de saber como devo proceder para o sistema esperar a resposta do servlet, e aí sim inserir os dados na tela.

tentei fazer do tipo:

Classe Principal

   
   setTitle1("Selecione a Região");
   if(atualiza[tela]) {
     Conexao conex = new Conexao();
     conex.setPrincipal(this);
     conex.setUsuario(""+codUsuario);
     conex.setEstado(""+veEstados.elementAt(selecionado[10]*2));
     conex.start();
     while (getRetornourl.equals("")) {

     }
       // sai do laço quando a thread insere valor para retornourl.
   }

Classe Conexao:

package main;

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

class Conexao implements Runnable {
    
    private Principal principal;
    private String usuario = "";
    private String estado = "";
    private String aux = "";    
           
    public Conexao() {
                
    }
    
    public void setUsuario(String t) {
        this.usuario = t;
    }
        
    public void setEstado(String t) {
        this.estado = t;
    }
    
    public void setPrincipal(Principal p) {
        this.principal = p;
    }
    
    public void run() {
        StringBuffer b = new StringBuffer();
        StringBuffer url = new StringBuffer();
        url.append("http://localhost:8080/teste/servlet/bin.Servlet");
        try{
            
            HttpConnection con = (HttpConnection) Connector.open(url.toString(),Connector.READ_WRITE);
            con.setRequestMethod(HttpConnection.POST);
            con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
            OutputStream outputStream = con.openOutputStream();
            
            byte data[];
            
            if (!usuario.equals("")) {
                data = ("usuario="+usuario).getBytes();
                outputStream.write(data);
            }
            
            if (!estado.equals("")) {
                data = ("&estado="+estado).getBytes();
                outputStream.write(data);
            }
            
            outputStream.close();
            InputStream inputStream = con.openInputStream();
            int ch;
            int status = -1;
            status = con.getResponseCode();
            if(status == HttpConnection.HTTP_OK){
                
                while((ch = inputStream.read()) != -1) {
                    b.append((char) ch);
                }
                for(int i = 0;i<b.toString().length();i++){
                    aux = aux+b.toString().substring(i,i+1);
                }                             
                con.close();                
            } else{
                System.out.println("ERRO DE PROCESSAMENTO"+con.getResponseMessage());
            }
        } catch(IOException ioe){
            System.out.println("ERRO DE CONEXAO"+ioe);            
        }
        principal.setRetornourl(aux);
    }
    
    public synchronized void start() {
        Thread thread = new Thread(this);        
        try
        {            
            thread.start();
        }
        catch(Exception e) { }
    }
}

alguém tem alguma sugestão?

att
Carlos>

Faça o loop “descansar” caso contrário sua conexão não irá processar como deve.

[code]# while (getRetornourl.equals("")) {

try{

        Thread.sleep(50);
    }catch(Exception e){}

}[/code]

Blz cara…

consegui fazer rodar assim:

  setTitle1("Selecione o Estado");
  if(atualiza[tela]) {                 
    Conexao conex = new Conexao();
    conex.setPrincipal(this);
    conex.setUsuario(""+codUsuario);
    conex.setUpdateqtde(p.retornavisupropaganda(codUsuario));
    conex.start()                   
  }
  atualiza[tela]=false;
  if(!retornourl.equals("")){
    continua = true;                    
  } else {                    
    repaint();
  }
  if (continua) {
    //monta a tela;

agora a minha dúvida é se este método prejudica muito o processamento no celular, pois estou utilizando o emulador e funciona bem.

att,
Carlos Eduardo Ávila