domingo, 16 de agosto de 2015

Android + Web Services + NetBeans



Android + Web Services, duas tecnologias que unidas geram grandes projetos e resultados incríveis!

O número de aplicativos desenvolvidos para dispositivos móveis com plataforma Android cresce a cada dia que passa, sejam eles jogos,  calculadoras de todos os tipos ou até mesmo simuladores de lanterna! Com esse crescimento, surgem também outras necessidades, como por exemplo armazenar informações localmente no dispositivo ou em bancos de dados remotos, acessar serviços remotamente, gerar conteúdo dinamicamente através da web, etc. Para suprir esta necessidade de consumir serviços remotamente, a plataforma Android possui bibliotecas java que possibilitam acessar web services e trafegar dados de forma segura através do protocolo SOAP.

Neste artigo vamos entender de uma forma mais geral o funcionamento destas tecnologias, mas nos próximos posts iremos nos aprofundar em cada uma das tecnologias. Teremos exemplos de códigos  e tenho a pretensão de montar um projeto para um aplicativo de controle financeiro com acesso a  um web service.

Vamos começar entendendo o que são web services, eles nada mais são do que programas que ficam armazenados em um endereço na internet que ficam rodando e aguardando requisições. Como exemplo poderíamos desenvolver uma classe em java chamada Calculadora, e nesta classe teríamos 4 métodos: adicao, subtracao, multiplicacao e divisao.

Cada um destes métodos são operações do web service Calculadora e cada um deles recebem requisições com parâmetros que são processados e em seguida retornados através de uma resposta que o aplicativo cliente está aguardando. Estas operações seriam acessadas através de URLs específicas como por exemplo: http://www.portalmatematica.com/Calculadora/multiplicacao/ ou http://www.portalmatematica.com/Calculadora/adicao/.

Estes programas podem ser desenvolvidos em diversas linguagens como por exemplo C#, VB, JAVA e etc, estes programas são hospedados em servidores web que podem ser por exemplo o famoso IIS da Microsoft ou o TOMCAT do projeto Apache, este segundo foi desenvolvido para aplicações JAVA e portanto será o servidor escolhido para nossos exemplos.

Agora que entendemos um pouquinho sobre os web services (entraremos em maiores detalhes nos próximos posts) vamos agora para a outra ponta da aplicação, ou seja, a parte cliente, chamamos de cliente os programas que acessam recursos hospedados em servidores, no nosso caso os web services, mas poderíamos acessar um servidor de banco de dados por exemplo.

Seguindo nosso artigo, o programa  cliente será um aplicativo Android que terá uma interface simples de calculadora e que não realizará os cálculos localmente no aparelho móvel, mas enviará uma requisição para um web service hospedado na nuvem que processará os dados e retornará o resultado do cálculo.

Para conseguir efetuar conexão entre as duas pontas da aplicação, teremos que utilizar uma tecnologia que consiga trafegar os dados através da internet e que seja compreendida por ambas as partes cliente e servidor. Para esta tarefa utilizaremos o protocolo SOAP que além ser muito prático e confiável ele utiliza como base o XML que é uma linguagem de marcação amplamente utilizada por programadores na integração entre sistemas.

O SOAP irá basicamente criar um arquivo XML contendo alguns dados para serem recebidos pelo servidor, após criar o documento irá envelopar estes dados e criar uma conexão com a aplicação destino, informando o endereço e o nome do serviço que deseja acessar no servidor, após estabelecida a conexão os dados são enviados, então o cliente fica aguardando uma resposta do servidor. O servidor por sua vez irá receber o envelope SOAP, desempacotar o documento XML e separar os dados para então processá-los e depois devolver o resultado.

Depois de tanta teoria, acho que chegou a hora de começar a mostrar tudo isso na prática, portanto iremos começar a desenvolver a parte servidor de nossa aplicação, para isso vamos contar com a ajuda de uma IDE muito boa para isso chamada Netbeans. Muitos irão dizer que o eclipse é muito melhor, mas por questões pessoais vou de NetBeans com o qual já sou bem acostumado.

Para executar este exemplo iremos partir do princípio que você já tenha o servidor TomCat instalado, em caso de dúvidas, aconselho a instalação do XAMPP, que é um conjunto de de aplicações reunidos em um único pacote, segue o site: https://www.apachefriends.org/pt_br/index.html.

Para fazer o download do NetBeans na sua última versão (no momento desta publicação 8.0.2), acesse o seguinte link: https://netbeans.org/downloads/
Aconselho baixar a versão completa que já vem com o TOMCAT embutido, inclusive o GlassFish, além de já contar com o Java EE que utilizaremos para desenvolver a aplicação Servidor.





















Ao iniciar o NetBeans pela primeira vez, você verá uma tela parecida com a imagem acima. Então você deve clicar no menu Arquivo >>Novo Projeto ou se preferir utilizar o atalho de teclado Ctrl + Shift + N. Será apresentada uma tela parecida com a imagem abaixo:




Então você deve selecionar a opção Java Web na lista esquerda e em seguida no quadro da direita selecione Aplicação Web, clique no botão Próximo.


Na próxima tela você terá que colocar o nome do projeto e clicar no botão próximo, conforme mostrado na imagem acima.

Depois você deverá selecionar o servidor Web, neste ponto se você seguiu a indicação do download da versão do Netbeans, então nesta próxima tela você verá que o NetBeans trouxe como padrão op Servidor Glassfish, porém conforme explicado no começo, nós utilizaremos o TOMCAT, portanto vamos clicar no botão adicionar, conforme imagem abaixo.


Então será apresentada uma tela para selecionar o tipo de servidor, localize o Apache TomCat e clique no botão próximo.


Em seguida será apresentada uma tela para informar o diretório de instalação do Tomcat, no meu caso apontei para o diretório do xampp onde existe o apache, veja a imagem abaixo:


Não esqueça de marcar a opção "Usar pasta de configuração privada" e copiar o mesmo diretório do tomcat informado na localização do servidor. Informe um nome de usuário e senha e marque a opção "Criar usuário caso não exista". Clique no botão Finalizar.

Então o Netbeans adicionará o TomCat como servidor, e na tela de configuração seguinte não esqueça de marcar a opção "Ativar injeção de contextos e dependências", então clique em Finalizar.


Agora o Netbeans irá criar toda a estrutura do projeto e o abrirá para você. Por padrão o Netbeans criará no seu projeto uma página JSP chamada index.jsp, que no nosso caso pode ser ignorada e fechada. Neste ponto a estrutura do seu projeto deve estar bem parecida com a imagem abaixo:


Agora vamos criar um web Service em nosso projeto, para isso clique com o botão direito no nome do seu projeto no topo da estrutura do mesmo e selecione a opção Novo > Web Service. Na tela que será apresentada, informe um nome para o web service e o pacote onde o mesmo será armazenado e clique no botão finalizar:


Ao finalizar, o Netbeans irá apresentar uma tela informando que o servidor informado não oferece suporte a Web Services e perguntando se você deseja utilizar uma configuração para web services chamada METRO, então você deve clicar no SIM.



Agora seu projeto já possui tudo o que precisa para rodar, inclusive um web service de exemplo pronto para ser executado, abaixo o código do web service, que nada mais é do que uma classe java com um método:

package br.com.oprofissional.calculadora.ws;

import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;


@WebService(serviceName = "CalculadoraWS")
public class CalculadoraWS {

    /**
     * This is a sample web service operation
     */
    @WebMethod(operationName = "hello")
    public String hello(@WebParam(name = "name") String txt) {
        return "Hello " + txt + " !";
    }
}

Para verificarmos se está tudo certo, vamos clicar com o botão direito sobre o nome do seu projeto que é o primeiro nó da estrutura do projeto e selecionar a opção Executar:


O Netbeans irá compilar o seu projeto e implantar o mesmo no Tomcat, em seguida executará o projeto no seu browser padrão, o resultado deve ser parecido com a imagem abaixo:


O que está sendo apresentado na tela é o arquivo index.jsp que foi criado automaticamente junto com o projeto, ele foi definido como padrão, mas se quisermos ver se o web service foi implantado com sucesso podemos digitar na URL atual o seguinte: http://localhost:8080/Calculadora/CalculadoraWS.
Adicionamos o nome do web service no final da URL para podermos acessá-lo, então teremos o seguinte resultado:


Esta tela mostra os web services disponíveis, e ao clicar no link apontado como WSDL você terá acesso ao XML do web service que contem informações sobre o serviço, inclusive os métodos da classe que aqui são chamados de operations:



E com isso finalizo este post que ficou bastante grande e um pouco cansativo de acompanhar, mas que para quem está começando é uma boa fonte de conhecimento e mostra como desenvolver rapidamente um simples web service.
No próximo post pretendo dar um foco maior nas classes java e seus métodos, desenvolvendo as operações que serão acessadas no web service.

Obrigado!



Nenhum comentário:

Postar um comentário