: 1pt; BORDER-LEFT: windowtext 1pt solid; PADDING-TOP: 1pt; BORDER-BOTTOM: windowtext 1pt solid; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div">
De que se trata o artigo: Comunicação com web services fazendo uso da plataforma aberta Android. Para que serve: Desenvolver aplicações Android para sistemas distribuídos, aproveitando-se da característica de interoperabilidade de web services de forma a economizar banda e processamento. Em que situação o tema é útil: Quando se deseja integrar uma aplicação Android a um serviço web já existente. Mais especificamente neste artigo, serviços web RESTful que utilizam JSON como formato de troca de informações.
Web services tem sido a maneira mais adotada na indústria para integrar suas aplicações com novos partners, fornecer serviços poderosos aos consumidores e garantir interoperabilidade entre seus sistemas distribuídos ao mesmo tempo em que novas funcionalidades são liberadas.
Neste artigo você vai descobrir como acessar e utilizar estes serviços com Android.
Por onde começar?
A primeira decisão a ser tomada é escolher um estilo de arquitetura de software, ou seja, um conjunto de regras de design que identificam os tipos de componentes a serem utilizados para compor nosso sistema.
Visto que estamos trabalhando com web services e não podemos esquecer que nosso client será um dispositivo móvel com limitações de memória, processamento e energia, escolhemos o uso de web services RESTful (REpresentational State Transfer) - um design que abraça uma arquitetura cliente-servidor sem estado, em que os serviços web são encarados como recursos e podem ser identificados por suas URLs (ler Nota DevMan 1). Os clientes deste serviço devem acessar uma representação particular do recurso que desejam, transferindo o conteúdo de um conjunto de métodos remotos definidos globalmente, que descrevem uma ação a ser realizada sobre o recurso.
A nossa principal vantagem no ponto de vista de cliente do serviço é que o uso de RESTful implica num menor uso de banda, pois o uso de um protocolo SOAP exigiria um custo muito alto devido ao seus headers, camadas adicionais de elementos SOAP e a interpretação do XML.
Então, por motivos de processamento e banda, escolhemos JSON (JavaScript Object Notation) como nosso formato de troca de mensagens - além da leveza, JSON nos oferece a interpretação instantânea da mensagem como código javascript pelo browser, caso este seja utilizado (ler Nota DevMan 2).
Nota DevMan 2. REST
REST é uma descrição analítica de arquiteturas web existentes, e assim, a inter-relação entre o estilo e protocolo HTTP subjacente aparece de forma transparente.
Nota DevMan 1. JSON
JSON (JavaScript Object Notation) é um formato leve de troca de dados. Um formato de texto completamente independente de linguagem que faz uso de convenções familiares aos programadores de linguagens da família C (C, C++, Java, Javascript..).
Definindo um objetivo
Visto que nosso objetivo é efetuar a comunicação com um web service, nada melhor do que utilizar um existente ao invés de criarmos uma aplicação ponta-a-ponta, afinal não queremos perder o foco.
A sugestão é desenvolver um aplicativo a ser chamado de ClimaTempo, capaz de nos informar como está o tempo em uma dada localidade.
Felizmente existe um serviço no GeoCities que torna disponível estas informações, através de uma série de centrais de observação do tempo e clima dispostos pelo mundo, bastando informar a latitude e longetude (as quais podem ser obtidas através do GPS do Android, ou Google Maps) ou ainda o código internacional dos aeroportos (ICAO – Internacional Civil Aviation Organization). Este último serviço (que faz uso do ICAO) nos retorna informações como temperatura, velocidade e direção do vento, horário da observação e nome da central, e por óbvio está limitado à cidades que possuem um aeroporto.
Vamos começar pelo caso mais simples, onde definimos uma cidade padrão, fazemos a chamada ao serviço web - enviando o ICAO - e tratamos a resposta para exibir
convenientemente ao usuário.
Desenvolvendo o ClimaTempo
Uma boa forma de se iniciar um projeto pequeno é definir e delimitar suas funcionalidades.
Já é sabido que estaremos trabalhando com um serviço web. Por este motivo, precisamos de permissão de acesso à internet, o que no Android é feito via AndroidManifest. A Listagem 1 nos apresenta na linha 6 uma forma de especificar o uso desta permissão. O restante do arquivo é como um AndroidManifest qualquer, que define sua única atividade nas linhas 7 à 15.
Listagem 1. AndroidManifest.xml
01.<?xml version="1.0" encoding="utf-8"?>
02.<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...