Para consumir um WebService utilizaremos o ksoap, efetue o download no seguinte link: aqui, não se esqueça de adicionar o jar ao Build Path.
Primeiramente é necessário adicionar a permissão de acesso a Internet no AndroidManifest.xml, adicione a seguinte configuração entre as tags
<uses-permission android:name="android.permission.INTERNET" />
Para consumir o serviço escreva o seguinte código:
import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class ConsomeServico extends Activity { private static final String SOAP_ACTION = "seuMetodo"; private static final String METHOD_NAME = "seuMetodo"; private static final String NAMESPACE = "http://endereco-do-webservice:8080/"; private static final String URL = "http://endereco-do-webservice:8080/webservice/webservice.jws"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView textView = new TextView(this); try { SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); androidHttpTransport.call(SOAP_ACTION, envelope); Object result = envelope.getResponse(); textView.setText("Resultado: " + result); } catch (Exception e) { e.printStackTrace(); } setContentView(textView); } }
Dúvidas ou sugestões? Deixe o seu comentário =)
Cara parabéns pelo POST!
Vai me ajudar bastante em meu projeto.
cara eu nun intendi 100% o codigo…
e tbm… como faço pra pega esse xml e armazenar em um banco de dados..
me responde por e-mail… fika mais facill…
Parabéns pelo Post, bem útil e prático.
Mas ainda não consegui conectar… dá um erro:
java.net.ConnectException: localhost/127.0.0.1:8080 – Connection refused
Se puder me ajudar a descobrir o erro, segue o código:
public class TesteWS extends Activity {
private final String METHOD_NAME = "soma";
private final String SOAP_ACTION = "soma";
private final String NAMESPACE = "http://127.0.0.1:8080/";
private final String URL = "http://127.0.0.1:8080/axis/Soma.jws";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
((Button) findViewById(R.id.somar)).setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
myClickHandler();
}
});
}
public void myClickHandler() {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
HttpTransportSE httpTransport = new HttpTransportSE(URL);
httpTransport.debug = true;
PropertyInfo pi = new PropertyInfo();
pi.setName("a");
pi.setValue(Integer.parseInt(((EditText) findViewById(R.id.primeiro)).getText().toString()));
pi.setType(int.class);
request.addProperty(pi);
pi = new PropertyInfo();
pi.setName("b");
pi.setValue(Integer.parseInt(((EditText) findViewById(R.id.segundo)).getText().toString()));
pi.setType(int.class);
request.addProperty(pi);
try {
envelope.setOutputSoapObject(request);
httpTransport.call(SOAP_ACTION, envelope);
Object response = envelope.getResponse();
((TextView) findViewById(R.id.resultado)).setText(response.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Valeu!!!
Nos atributos “NAMESPACE” e “URL” você deve informar o endereço do servidor onde está rodando o web service.
O endereço que você definiu “http://127.0.0.1:8080” é o endereço de loopback, ou seja, com esse endereço o programa acaba tentando acessar um web service no próprio aparelho (ou emulador).
Cara, vc já consumiu um webservice microsiga no android? estou tentando consumir na hora de receber os objetos me apare esse erro:
09-14 12:54:21.496: INFO/teste(711): SoapFault – faultcode: ‘Sender’ faultstring: ‘WEBSERVICE ERROR : Soap Prefix Missing : CRDLOGIN : SESSIONLOGIN : Formato do Pacote Soap DESCONHECIDO.’ faultactor: ‘null’ detail: null
abaixo: é o webservice microsiga:
private static final String NAMESPACE = “http://webservices.microsiga.com.br/”;
private static final String URL = “http://webservices.microsiga.com.br/CRDLOGIN.apw”;
private static final String METHOD_NAME = “SESSIONLOGIN”;
private static final String SOAP_ACTION = “http://webservices.microsiga.com.br/SESSIONLOGIN”;
ele está nor se quiser fazer testes!!
Ronaldo, bom dia.
Estou com o mesmo problema seu. Tento consumir um WS da microsiga e recebo o mesmo erro.
Voce conseguiu resolver este problema?
Bom dia,
Vocês conseguiram resolver o problema? Estou com o mesmo problema.
Como faço pra usar esse mesmo código mas considerando que o metodo do web service possui argumentos (parâmetros). Se possível, responda por email. Obrigado.
Para adicionar parâmetros em um método via cliente webservice vc precisa usar a função addProperty(“NomeParametro”,”Valor”) onde o nome do parâmetro é exatamente igual ao que foi implementado no Servidor.
E quando eu recebo uma lista com vários campos e quero filtrar o XML para pegar apenas um dado especifico, vc tem alguma ideia de como faz? valeuu
Ola Caro amigo joaopetreli
se ainda tiver disposicao para me ajudar estou usando o exemplo acima seu porem quando execute o projeto esta dando erro THe application Webservice1 process br.we.com.br) has stopped please try again
estou a dias tentando procurar na net algo que eu possa consumir um web service segue minha
private static final String SOAP_ACTION = “Webusuario”;
private static final String METHOD_NAME = “Websuario”;
private static final String NAMESPACE = “http://10.0.2.2:8087/”;
private static final String URL = “http://10.0.2.2:8087/webrun/webservices/ANDServices.jws?wsdl”;
o resto esta como no seu site
Obrigado se puder me ajudar