Problema ao Connectar GCF

Estou com problema ao abrir uma conexão HTTP. No emulador ao iniciar a conexão ele pergunta blza se quer conectar a tal endereço, aperto em YES pra confirmar só que trava a aplicação vou postar o codigo abaixo, quem puder ajudar agradeço desde já!!

package vendas;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;


public class RetornaDados implements Runnable{
	private boolean statusThread;
	private String dados;
	public RetornaDados() {}
	
	public String getDados(){
		statusThread = true;
		new Thread(this).start();
		
		while(statusThread){
			try {
				Thread.sleep(1000);
			} catch (Exception e) {
				e.getMessage();
			}
		}
		
		return dados; 
	}
	
	public void run(){
		System.out.println("INICIANDO Thread");
		HttpConnection httpConn = null;
		InputStream is = null;
		
		try {
			 System.out.println("PREPARANDO PRA CONECTAR"); 
			 httpConn = (HttpConnection)Connector.open("http://192.168.15.106/ret.php?module=cliente");   
			 
			// System.out.println("Conexão Aberta");
			 httpConn.setRequestMethod(HttpConnection.GET);
			 
			 httpConn.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC 1.1");
			 
			// httpConn.setRequestProperty("Connection", "close");
			 
			 is = httpConn.openInputStream();
			 
			 ByteArrayOutputStream baos = new ByteArrayOutputStream();
			 
			 int ch;
			 
			 //ch recebe os bytes
			 while((ch = is.read()) != -1){
				 baos.write(ch);
			 }
			 
			 dados = new String(baos.toByteArray());
			 
			 
		} catch (Exception e) {
			System.out.println("Erro Inespeado: " + e.getMessage());
		}finally{
			if(is != null){
				try {
					is.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(httpConn != null){
				try {
					httpConn.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		statusThread = false;
	}
	
}

Eu tive o mesmo problema. Se você testar em outros emuladores (Nokia, Motorola, etc) ele funciona e no celular também. Mas para funcionar no emulador do WTK você tem que fazer a conexão dentro de uma Thread separada só para ela.

Eu vi este exemplo no fórum do GUJ postado pelo usuário conhecido como julgado:

Parte que chama a conexao

new Thread(new Runnable() {     
                public void run(){     
                             // NomeForm = "formResChamado";     
                              url = "http://localhost/teste2.php?Vid_reschamado="+txt_Resolucao.getString();     
                                try{     
                                    getConsulta(url);     
                                }catch (IOException e) {     
                               //alerta.setString(e.getMessage());     
                         System.out.println(e.getMessage());         
                         alerta.setType(AlertType.WARNING);     
                         alerta.setTimeout(Alert.FOREVER);     
                    }     
                }     
            }).start();

O metodo getConsulta

if(status == HttpConnection.HTTP_OK){     
                con.close();     
                               while((ch = inputStream.read()) != -1) {     
                    b.append((char) ch);     
                }     
                           
                                for(int i = 0;i<b.toString().length();i++){     
                    if(b.toString().substring(i,i+1).equals("%")){     
                                    nome = aux;     
                                    aux = "";     
                                    i++;     
                    } if (b.toString().substring(i,i+1).equals("#")) {     
                                    endereco = aux;     
                                    aux = "";     
                                        try {     
                                             Chamado Ch = new Chamado();     
                                             Ch.setCliNome(nome);     
                                             Ch.setCliCod(Integer.parseInt(endereco));       
                                             Ch.save();     
                                            aux = "";     
                                        }     
                                        catch (Exception e) {     
                                            e.printStackTrace();     
                                        }     
                                           
                                } else {         
                                         aux        = aux+b.toString().substring(i,i+1);     
                    }     
                }     
                        if(con != null) {     
                            con.close();     
                        }

Isso me ajudou… espero que ajude a você também.>

O Engraçado que eu tenho outras MIDlets aqui que conecto da mesma forma sem precisar colocar a conexão separada em uma Thread
da uma olhada:

........
public void commandAction(Command c, Displayable d){
		
		if(d == frmMain){
			if(c == cmdExit){
				try {
					destroyApp(true);
				} catch (MIDletStateChangeException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}	
			}
			if(c == cmdSearch){
				new Thread(this).start();
				
			}
		}
		
	}
	
	public void run(){
		//Cria o atributo para conexão
		HttpConnection httpConn = null;
		//Cria o atributo para receber os bytes
		InputStream is = null;
		try {
			//Abro a conexão passando a url e o texto de pesquisa
			httpConn = (HttpConnection)Connector.open(URL+txtSearch.getString());
			System.out.println("Conectado!");
			
			//Informo o tipo de metodo vou utilizar para enviar as informações
			httpConn.setRequestMethod(HttpConnection.GET);
			
			//Informo ao servidor a especificação do meu aplicativo
			httpConn.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC 1.1");
			
			//Informo ao servidor que quando receber os dados ele feche a conexão
			httpConn.setRequestProperty("Connection", "close");
			
			//Abre o fluxo de dados
			is = httpConn.openInputStream();
			
			//Vai armazenar os bytes recebidos
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
						
			//Recebe os bytes de is
			int ch;
			
			//Ch recebe os dados lidos da conexão
			// e enquando não for menor que menos um alimenta baos
			while((ch = is.read()) != -1){
				baos.write(ch);
				
			}
			
			//Crio uma nova string recebendo os dados amarzenados em baos
			String str = new String(baos.toByteArray());
			
			strTranslation.setText(removeHtml(str));
			
		} catch (Exception e) {
			strTranslation.setText("Erro inesperado: " + e.getMessage());
		}
		finally{
			if(is != null){
				try {
					is.close();
				} catch (IOException e) {
					 e.printStackTrace();
				}
			}
			if(httpConn != null){
				try {
					httpConn.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
	}