Estou enfrentando um problema numa aplicação que envia determinadas informações para um webservice e, na hora de exibir o retorno, às vezes (aprox 1 em cada 10 vezes) retorna o formulário vazio! O que pode estar acontecendo, pois na linha 29, o result2 deveria estar sempre recebendo o retorno do webservice…
Código da classe que executa a conexão:
[code]class OperacaoThread extends Thread { //THREAD DA OPERACAO
private static final String URL = "http://192.168.0.123:8080/SBBeanService/Service";
private static final String SOAP_ACTION_LOGIN = "Operacao";
private static final String NAMESPACE = "http://teste.servico.com.br";
private static final String OPERATION_LOGIN = "Operacao";
public void run() {
wstring = "xxx|yyy|aaa|bbb|ccc";
try {
SoapObject request;
request = new SoapObject(NAMESPACE, OPERATION_LOGIN);
SoapSerializationEnvelope envelope =
new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
request.addProperty("arg0", wstring);
HttpTransport httpTransport = new HttpTransport(URL);
httpTransport.call(SOAP_ACTION_LOGIN, envelope);
result2 = envelope.getResponse(); // obtem a string de RETORNO
wmsg = result2.toString();
}catch(SoapFault sf){
System.out.println("SOAPFault msg> "+ sf.faultstring);
wmsg=sf.faultstring;
}
}catch (Exception e) {
System.out.println("Resultado errado " + e.toString());
wmsg = "Falha na comunicação. Tente Novamente!";
e.printStackTrace();
}
}
switchDisplayable(null, getTerminoOperacao());
}
}
[/code]Método que monta o formulário que exibe o retorno:
public Form getTerminoOperacao() {
if (TerminoOperacao == null) {
TerminoOperacao = new Form("", new Item[] { getSiRetorno() });
TerminoOperacao.addCommand(getOkCommand6());
TerminoOperacao.setCommandListener(this);
}
return TerminoOperacao;
}
Método que monta a string que exibirá o retorno:
public StringItem getSiRetorno() {
if (siRetorno == null) {
siRetorno = new StringItem("", wmsg);
}
return siRetorno;
}