>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Erro ao retorno de Web Services


Boa tarde

Estou fazendo uma aplicação onde consulta a um web services que retorna uma lista de dados, segui a ideia da aula de webservices do android.

minha aplicação está assim:


public class MainSincronizaUsuarios extends ActionBarActivity implements Runnable {
private AndroidHttpTransport transporte;
private TextView txtV;
private String namespace = "http://bi.coopercarga.com.br/";
private String METHOD_NAME = "SincronizaUsuarios";
private String URL = "http://192.168.0.92/WSCheckList/";
private String SOAP_ACTION = "http://192.168.0.92/WSCheckList/ValidacaoCheckList.asmx?op=SincronizaUsuarios";
private SoapObject soap;
private SoapSerializationEnvelope envelop;
private ProgressDialog progress;
private SoapObject resposta;
private Drawable drawable;
private EditText retorno;



@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sincroniza_usuarios);

retorno = (EditText) findViewById(R.id.edRetorno);

Button btnOk = (Button) findViewById(R.id.btnOk);

final EditText txtNome = (EditText) findViewById(R.id.edDados);

btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
soap = new SoapObject(namespace,METHOD_NAME);

PropertyInfo p1 = new PropertyInfo();
p1.setName("_celular"); //sCountryISOCode
p1.setValue(txtNome.getText().toString());
p1.setType(String.class);

soap.addProperty(p1);

envelop = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelop.setOutputSoapObject(soap);

//envelop.dotNet = true;

transporte = new AndroidHttpTransport(URL);

progress = ProgressDialog.show(MainSincronizaUsuarios.this, "Carregando","Aguarde...",true, false);
Thread th = new Thread(MainSincronizaUsuarios.this);
th.start();
}
});
}

@Override
public void run() {
try {
transporte.call(SOAP_ACTION, envelop);
//resposta = (SoapObject) envelop.getResponse();
SoapObject obj = (SoapObject) envelop.getResponse();
//retornaWS(resposta.toString());
} catch (Exception ex) {
Log.d("Erro = ", ex.getMessage());
}
}
}


Porém quando chega a linha do envelop.getResponse() ocorre o seguinte erro:

[quote]SoapFault - faultcode: "soap:Client" faultstring: "O servidor não reconheceu o valor do cabeçalho HTTP SOAPAction: http://192.168.0.92/...onizaUsuarios."faultactor: "null" detail: org.kxml2.kdom.Node@40591768 [/quote]

Alguém sabe o que pode ser isso? Problema na minha aplicação Android ou no meu Web Services?

Obrigado



4 Respostas


Ola Josivan,

pq tu comentou envelop.dotnet = true???




Bom dia André,

Só consegui responder agora! Então, essa era a linha que eu tirei o comentário, mas sozinha não deu resultado, porém percebi que seria a forma em que eu estava apresentando e ficou assim:


private AndroidHttpTransport transporte;
private String namespace = "http://bi.coopercarga.com.br/";
private String METHOD_NAME = "SincronizaUsuarios";
private String URL = "http://bi.coopercarga.com.br/CheckListWS/ValidacaoCheckList.asmx";
private String SOAP_ACTION = "http://bi.coopercarga.com.br/SincronizaUsuarios";


Porém agora eu tenho outro problema, quando começo a executar a minha Thread com um ProgressDialog, eu começo a debugar e simplesmente o ProgressDialog nao para mais de ser exibido, já fiz de tudo mas fica praticamente travado na tela, mesmo todo o processo já tendo acabado, se eu clicar no ProgressDialog ele começa a Thread novamente

Segue meu código completo:

http://rlsystem.com.br/forum/disco/uploads/33613b6199668b6914288c12562702b9-android.zip

Infelizmente não consigo postar meu código, gera um erro pedindo para tentar novamente, então fiz um upload de um arquivo com o código.
O código nao tem nenhum apostrofo, o que poderia gerar erro aqui no forum!

Obrigado!




Ola josivan

ja tentou dar um progress.dismiss() ali no final do public void run() depois do try catch....




Funcionou colocando o progress.dismiss();

Obrigado!