Boas pessoal.Resolvi escrever um tutorial de como invocar um
webservice a partir de Android. Neste caso o
webservice está feito em .NET o que vai causar uma pequena alteração no código.Estou a utilizar a biblioteca kSOAP2 (
http://sourceforge.net/projects/ksoap2), que vamos necessitar importar para o nosso projecto.Depois de descarregada a bilioteca, no Eclipse, clicar botão direito do rato no nosso projecto -> Build Path -> Add External Archives e aí selecionar o .JAR da biblioteca kSOAP2.Temos agora os pre-requisitos necessários para começar a codificação.Vamos começar por definir os
imports necessários:
import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapPrimitive;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.AndroidHttpTransport;
Já dentro da nossa
Activity vamos definir as constantes que têm as informações relacionadas com o
webservice, como o endereço do
webservice, o método a invocar, etc.Vou usar como referência este
Webservice da W3SchoolsPodemos ver que temos dois métodos existentes CelsiusToFahrenheit e FahrenheitToCelsius que fazem a respectiva conversão de temperaturas.Indo ao
link Description na página do
webservice podemos ver a WSDL(estrutura de todo o webservice) que nos dará a informação que necessitamos para preencher as constantes.
private static final String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit";private static final String METHOD_NAME ="CelsiusToFahrenheit";private static final String NAMESPACE ="http://tempuri.org/";private static final String URL ="http://www.w3schools.com/webservices/tempconvert.asmx";
Para este exemplo, vou definir todo este código directamente no onCreate().Deixo os comentários nas próprias linhas de código.O código completo ficará algo do género.
Código FonteNota: Presupoe a criação de uma TextView com o id tv_wsResultSou mais um wannabe nesta plataforma e estou aberto a críticas, possívelmente já alguém arranjou uma biblioteca melhor para invocar
webservices. Eu sinceramente não encontrei grande alternativa. Espero que a informação seja útil.Abraços.