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>