Saltar para conteúdo


Foto
- - - - -

Tutorial de Webservices (.NET)


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

#1 claudio.andre

claudio.andre

    Membro

  • Membros
  • PipPip
  • 21 mensagens

Mensagem publicada 16 November 2010 - 23:57

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.

#2 r3pek

r3pek

    Guru de Android

  • Former Staff
  • PipPipPipPipPip
  • 1560 mensagens
  • LocalizaçãoBA4 - Terceira - Açores
  • Nexus One + Motorola XOOM

Mensagem publicada 17 November 2010 - 00:04

Boa iniciativa, obrigado!

#3 _VitorRodrigues_

_VitorRodrigues_
  • Convidados

Mensagem publicada 17 November 2010 - 11:22

Fantástico Cláudio. Pena o .NET ;)

#4 claudio.andre

claudio.andre

    Membro

  • Membros
  • PipPip
  • 21 mensagens

Mensagem publicada 17 November 2010 - 15:20

;) O código vai aplicar-se para webservices non-m$ft, apenas se vai ter que ter em conta aquela flag dotNet.Eventualmente poderemos depois ter que ajustar o código mediante o tipo de dados que o ws devolver sejam eles tipos complexos ou não. Tenho que experimentar também.

#5 kongas

kongas

    Novato

  • Membros
  • Pip
  • 1 mensagens

Mensagem publicada 07 December 2010 - 11:23

Boas! sou um novato em Android... Quando corro a aplicação no emulador não consigo obter resposta nenhuma, e fiz copy past do código, criei a TextView no respectivo xml, e corri... A única coisa que me aparece esquisito no código é a dizer que o import org.ksoap2.transport.AndroidHttpTransport é obsoleto...Terá alguma coisa a ver?Não consigo obter resposta do serviço.... O que me estará a faltar?Abraço a todos!

#6 claudio.andre

claudio.andre

    Membro

  • Membros
  • PipPip
  • 21 mensagens

Mensagem publicada 13 December 2010 - 09:31

Logo quando estiver por casa, vou confirmar se falhou alguma coisa também do meu lado.Está tudo ok com a tua ligação à internet dentro do emulador? Inicialmente tive problemas devido a isso.