Saltar para conteúdo


Foto
- - - - -

Ajuda com WebService + SOAP

soap webservice android java

  • Por favor inicie sessão para responder
4 respostas a este tópico

#1 Scotshild

Scotshild

    Novato

  • Membros
  • Pip
  • 3 mensagens
  • notbook, tablet, smartphone

Mensagem publicada 09 July 2015 - 15:39

Olá pessoal, estou fazendo um trabalho da faculdade que tem um webservice. acontece que inicialmente eu quero só fazer um teste pra saber se minha aplicação ta conseguindo conectar no WebService de boa.

O WebService está hospedado na universidade e tem o seguinte endereço:

http://sistema.unir....cosService?wsdl

A parte de teste que estou fazendo é com a função "consultar". Se eu digitar "1" o retorno deve ser "olá 1". É apenas uma função para teste.

O problema é que no momento de fazer a conexão ele entra, faz a conexão, mas quando vai pegar o resultado ele não consegue e pula para o catch.

Meu objeto usuario tem apenas uma string, é só pra guardar esse "Olá 1" que vai retornar...

Usuario.java

public class Usuario {
private String msg;

public Usuario(){

}

public Usuario(String msg) {
super();
this.msg = msg;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public String toString(){
return "Mensagem: "+ this.msg;
}

}

Meu UsuarioDAO tem apenas a função de consultar

UsuarioDAO.java

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import android.util.Log;


public class UsuarioDAO {
private static final String URL = "http://sistema.unir.br:8080/wsunir/ServicosAcademicosService?wsdl";
private static final String NAMESPACE = "http://ws.unir.br/";

private static final String CONSULTAR = "consultar";

public Usuario consultar(String id){
Usuario usr=null;

SoapObject buscarUsuario = new SoapObject(NAMESPACE, CONSULTAR);
buscarUsuario.addProperty("id", id);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(buscarUsuario);
envelope.implicitTypes = true;

HttpTransportSE http = new HttpTransportSE(URL);

Log.d("teste", "passou");


try {
http.call("urn:" + CONSULTAR, envelope);

//PASSOU DO HTTP.CALL

SoapObject resposta = (SoapObject) envelope.getResponse();

//AQUI ELE NÃO PASSOU E FOI PARA O CATCH

usr = new Usuario();

Log.d("teste", "passou3");

usr.setMsg(resposta.getProperty("Hello: ").toString());

} catch (Exception e) {
usr = new Usuario();
usr.setMsg("Falha na Conexão");
e.printStackTrace();
//return null;
}
return usr;
}
}
O MainActivity só mostra o que deu de resposta...
Em user = dao.consultar("1"); eu estou enviando esse 1 pq quero obter a resposta "Olá 1" MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

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

Usuario user = new Usuario();

UsuarioDAO dao = new UsuarioDAO();

user = dao.consultar("1");

TextView view = new TextView(this);
view.setText(user.getMsg());
setContentView(view);

}
}

Por favor pessoal, me ajudem aí eu nao sei pq ele não está obtendo essa resposta do WebService. Já tentei muito resolver e não consegui.

Em XML, a resposta obtida é essa:

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<S:Body>
<ns2:consultarResponse xmlns:ns2="http://ws.unir.br/">
<return>Olá 1</return>
</ns2:consultarResponse>
</S:Body>
</S:Envelope>

Obs.: biblioteca ksoap instalada perfeitamente e funcionando. Obs.2.: Realizei testes do WebService com o SoapUI e sim, ele está funcionando.


  • AustAdmilk e Franwab gosta disto

#2 xanex

xanex

    Membro

  • Membros
  • PipPip
  • 199 mensagens
  • LocalizaçãoLisboa
  • Nexus 10, Nexus 5x, Nexus 6p

Mensagem publicada 10 July 2015 - 11:09

http://www.c-sharpco...oid-using-soap/

 

http://code.tutsplus...p--mobile-21242

 

http://navinsandroid...b-services.html

 

tens ai 3 tuturiais, não tenho muito tempo para te rever isso, mais logo talvez volto cá 


  • Scotshild gosta disto

#3 Scotshild

Scotshild

    Novato

  • Membros
  • Pip
  • 3 mensagens
  • notbook, tablet, smartphone

Mensagem publicada 10 July 2015 - 13:42

http://www.c-sharpco...oid-using-soap/

 

http://code.tutsplus...p--mobile-21242

 

http://navinsandroid...b-services.html

 

tens ai 3 tuturiais, não tenho muito tempo para te rever isso, mais logo talvez volto cá 

Usando o primeiro link que vc me passou eu vi que ele usava um codigo diferente para pegar a resposta do webservice. Eu usei o mesmo comando que ele usa:
 

 SoapObject result = (SoapObject)envelope.bodyIn;

Funcionou, MAS AINDA TEM UM PROBLEMA, ao invés de ele me retornar "Olá 1", ele está me retornando "Olá null", não sei pq.



#4 xanex

xanex

    Membro

  • Membros
  • PipPip
  • 199 mensagens
  • LocalizaçãoLisboa
  • Nexus 10, Nexus 5x, Nexus 6p

Mensagem publicada 10 July 2015 - 14:16

se é obrigatorio enviares um 1, e depois receber "olá 1", e se tu estás a enviar um 1 e recebes "olá null", quer dizer que quem fez o servidor fez aquilo mal, podes testar o pedido num browser e ves o que recebes

 

eu normalmente utilizo o Postman, um plugin para o google crome para testar os pedidos html



#5 Scotshild

Scotshild

    Novato

  • Membros
  • Pip
  • 3 mensagens
  • notbook, tablet, smartphone

Mensagem publicada 10 July 2015 - 14:30

Eu fiz o teste com o SoapUI e deu certo. Acho que meu programa não está fazendo o envelope direito. 







Também marcado com uma ou mais destas tags: soap, webservice, android, java