Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
CCT0080 – Programação para Dispositivos Móveis Aula 15: Consumindo WebService no Android Consumindo WebService no Android Fundamentos de WebService Implantação cliente para consumir Webservice REST Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Fundamentos de Web Services Conceito de Web Service e seus componentes básicos Arquitetura e componentes Padrões Integração de aplicações Móvel com Web Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Fundamentos de Web Services Conceito de Web Service e seus componentes básicos A web é amplamente utilizada e reconhecida principalmente por sua arquitetura robusta, escalável e tolerante a falhas. Quem sustenta esses fatores e lhe dá todo este poder é o protocolo HTTP (o protocolo HTTP é utilizado, em regra, quando se deseja evitar que a informação transmitida entre o cliente e o servidor seja visualizada por terceiros, como, por exemplo, no caso de compras online). Atualmente, muitas vezes necessitamos integrar aplicações em ambientes totalmente diferentes e os WebServices são uma das maneiras mais comuns e fáceis de integrar os diferentes sistemas. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Fundamentos de Web Services Arquitetura e componentes Está baseada na interação de três serviços: Provedor de Serviços Consumidor de Serviços Registro de Serviços A interação destes personagens envolve as operações de publicação, pesquisa e ligação. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Arquitetura e Componentes Provedor de Serviços Entidade que cria o Web Service Disponibiliza o serviço para ser consumido Para isso, ele: Descreve o serviço no formato padrão Deve ser compreensível por qualquer um Publicar os detalhes em um registro central que esteja disponível Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Arquitetura e Componentes Consumidor de Serviços Qualquer um que utilize o Web Service Conhece as funcionalidades do Web Service Recupera seus detalhes através das descrições disponibilizadas Também obtém os mecanismos de ligação Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Arquitetura e Componentes Registro dos Serviços É a localização central onde o provedor de serviços pode relacionar seus Web Services Contém informações como detalhe da empresa quais serviços que ela fornece Descrição técnica de cada um deles Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Padrões SOA (Service – Oriented Architecture) REST (Representation State Transfer) Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Padrões SOA Arquitetura Orientada a Serviços (SOA) não é uma tecnologia, não é uma metodologia, não é um serviço, mas é um conceito de arquitetura corporativo que promove a integração entre o negócio e a TI por meio de conjunto de interfaces de serviços acoplados. SOA é uma abordagem arquitetural corporativa que permite a criação de serviços de negócio interoperáveis que podem facilmente ser reutilizados e compartilhados entre aplicações e empresas. O SOA coloca a prestação de serviço como eixo de todo o negócio, dando destaque à gestão de serviços e ao cliente. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto SOA SOA não é uma tecnologia. Há tanto de negócio quanto de tecnologia em SOA. As tecnologias (padrões) que dão suporte a SOA são o que a viabiliza, mas SOA não é uma tecnologia por si só. SOA não é uma metodologia. Há várias metodologias (processos, ferramentas, métodos de trabalho) que podem ser usados para implantar SOA com sucesso. SOA não é e nemdefine alguma metodologia. SOA pode ser considerada uma filosofia arquitetural. SOA é uma linha de pensamento que permeia a implementação de necessidades de negócio, refletida em diretrizes, políticas e metodologias corporativas, não necessariamente restritas à área de TI. SOA não é algo que se possa comprar ou instalar. SOA não é um webservice. SOA não cria nada. Ela apenas sugere, propõe, define. SOA baseia-se no conceito do uso de serviços atômicos, independentes e com baixo acoplamento. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Padrões REST Representational State Transfer ou somente REST, é cada vez mais usado como alternativa ao “já antigo” SOAP onde que a principal crítica a este é a burocracia, algo que REST possui em uma escala muito menor. REST é baseado no design do protocolo HTTP, que já possui diversos mecanismos embutidos para representar recursos como código de status, representação de tipos de conteúdo, cabeçalhos, etc. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto REST O principal nesta arquitetura são as URLs do sistema e os resources (resource é um recurso, entidade). Ele aproveita os métodos HTTP para se comunicar, que são: GET: Solicita a representação de um determinado recurso. É definido como um método seguro e não deve ser usado para disparar uma ação (remover um usuário, por exemplo); POST: As informações enviadas no corpo (body) da requisição são utilizadas para criar um novo recurso. Também é responsável por fazer processamentos que não são diretamente relacionados a um recurso. DELETE: Remove um recurso. Deve retornar o status 204 caso não exista nenhum recurso para a URI especificada. PUT: Atualiza um recurso na URI especificada. Caso o recurso não exista, ele pode criar um. A principal diferença entre POST e PUT é que o primeiro pode lidar não somente com recursos, mas também pode fazer processamento de informações. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Fundamentos de Web Services Integração de aplicações Móvel com Web Com o mercado crescente de aplicativos para dispositivos móveis e os esforços das empresas por trás das plataformas em oferecer uma experiência de uso única em todos os dispositivos, torna-se cada vez mais importante que os dados não fiquem “presos” apenas nos dispositivos, mas disponíveis para uso posterior em outra plataforma. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Fundamentos de Web Services Integração de aplicações Móvel com Web Por exemplo, considere um aplicativo para dispositivos Android que possibilita o armazenamento de indicadores corporais. Considerando o fato de que futuros planos para esse aplicativo envolvam a evolução do mesmo para se tornar uma plataforma de saúde, seria necessária a implementação de métodos para fazer com que informações cadastradas no smartphone do usuário pudessem estar também presentes em seu computador ou tablet. Para isso, poderia ser implementado um web service que receberia envelopes serializados SOAP e armazenaria as informações enviadas dentro desses pacotes em um banco de dados, podendo esse ser baseado em qualquer banco relacional que forneça um driver JDBC. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Implementação cliente para consumir Web Service REST Conceito de Web Service do tipo REST Características de um web service REST Padrão JSON (JavaScript Object Notation) Implementação cliente web service REST no Android Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Implementação cliente para consumir Web Service REST Conceito de Web Service do tipo REST Sua concepção, portanto, não era de um protocolo, mas sim de um Design Pattern arquitetural para serviços expostos numa rede, como a internet, através do protocolo HTTP. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Implementação cliente para consumir Web Service REST Características de um web service REST GET: Solicita a representação de um determinado recurso. É definido como um método seguro e não deve ser usado para disparar uma ação (remover um usuário, por exemplo); POST: As informações enviadas no corpo (body) da requisição são utilizadas para criar um novo recurso. Também é responsável por fazer processamentos que não são diretamente relacionados a um recurso. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Implementação cliente para consumir Web Service REST Características de um web service REST DELETE: Remove um recurso. Deve retornar o status 204 caso não exista nenhum recurso para a URI especificada. PUT: Atualiza um recurso na URI especificada. Caso o recurso não exista, ele pode criar um. A principal diferença entre POST e PUT é que o primeiro pode lidar não somente com recursos, mas também pode fazer processamento de informações. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Implementação cliente para consumir Web Service REST Padrão JSON (JavaScript Object Notation) JSON (JavaScript Object Notation) é um modelo para armazenamento e transmissão de informações no formato texto. Apesar de muito simples, tem sido bastante utilizado por aplicações Web devido a sua capacidade de estruturar informações de uma forma bem mais compacta do que a conseguida pelo modelo XML, tornando mais rápido o parsing dessas informações. Isto explica o fato de o JSON ter sido adotado por empresas como Google e Yahoo, cujas aplicações precisam transmitir grandes volumes de dados. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Implementação cliente para consumir Web Service REST Padrão JSON (JavaScript Object Notation) A ideia utilizada pelo JSON para representar informações é tremendamente simples: para cada valor representado, atribui-se um nome (ou rótulo) que descreve o seu significado. Esta sintaxe é derivada da forma utilizada pelo JavaScript para representar informações. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Implementação cliente para consumir Web Service REST Padrão JSON (JavaScript Object Notation) Listagem 1: Representando o ano de 2017 "ano": 2017 Listagem 2: Representando um número real "altura": 1.72 Listagem 3: Representando uma string "site": “portal.estacio.br” Listagem 4: Representando um número negativo "temperatura": -2 Listagem 5: Representando um valor booleano "casado": true Listagem 6: Array de Strings [“RJ”, “SP”, “MG”, “ES”] Listagem 7: Matriz de Inteiros [ [1,5], [-1,9], [1000,0] ] Listagem 8: Objeto { “titulo”: “JSON x XML”, “resumo”: “o duelo de dois modelos de representação de informações”, “ano”: 2017, “genero”: [“aventura”, “ação”, “ficção”] } Listagem 9: Representando um valor nulo "site":null Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Implementação cliente para consumir Web Service REST Padrão JSON (JavaScript Object Notation) Os dados fornecidos pelo Web Service REST costumam utilizar o formato JSON, O tratamento deste formato, no Android, pode ser feito com o uso de JSONObject. A partir da raiz pode ocorrer a navegação nos dados através de getJSONObject, e a recuperação de valores através de getString. Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Implementação cliente para consumir Web Service REST Padrão JSON (JavaScript Object Notation) String resultado = ""; try { JSONObject raiz = new JSONObject(readStream(in, new Integer( urlConnection.getHeaderField("Content-Length")))); resultado = "US$1.00 vale R$" + raiz.getJSONObject("rates").getString("BRL"); } catch (JSONException e) { resultado = "ERRO! "; } Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto Implementação cliente para consumir Web Service REST Implementação cliente web service REST no Android Desenvolver um Cliente de Conversor de Valores Utilizar o fixer.io Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto activity_main.xml <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:app= "http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context= "com.example.eduardo.webservice1.MainActivity"> Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto activity_main.xml <TableRow> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="WebService" /> <TextView android:text="Fixer IO" /> <TextView android:text="Busca a Cotação " /> <TextView android:text="atual das moedas" /> </TableRow> Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto activity_main.xml <TableRow> <ImageView android:id="@+id/imageView" android:layout_width="104dp" android:layout_height="104dp" android:src="@drawable/money" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Buscar Cotaçao" android:onClick="conecta" /> </TableRow> Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto activity_main.xml <TableRow> <Button android:id="@+id/btnCaptura" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="buscaValor" android:text="Pega Valor" android:enabled="false" /> </TableRow> Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto activity_main.xml <TableRow> <TextView android:text="US$" /> <TextView android:text="R$" /> <TextView android:text="L$" /> <TextView android:text="E$" /> </TableRow> Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto activity_main.xml <TableRow> <TextView android:text="1.00" /> <TextView android:id="@+id/txtReal" /> <TextView android:id="@+id/txtLibra" /> <TextView android:id="@+id/txtEuro" /> </TableRow> </TableLayout> Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto MainActivity.java public class MainActivity extends AppCompatActivity implements Runnable{ private TextView txtReal; private TextView txtLibra; private TextView txtEuro; private Button btnBusca; public String resultado=""; public JSONObject raiz; Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto MainActivity.java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtReal = (TextView) findViewById(R.id.txtReal); txtLibra = (TextView) findViewById(R.id.txtLibra); txtEuro = (TextView) findViewById(R.id.txtEuro); btnBusca = (Button) findViewById(R.id.btnCaptura); } Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto MainActivity.java public void conecta(View v){ new Thread(this).start(); btnBusca.setEnabled(true); } Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto MainActivity.java public void buscaValor(View view){ try { txtReal.setText(raiz.getJSONObject("rates").getString("BRL")); txtEuro.setText(raiz.getJSONObject("rates").getString("EUR")); txtLibra.setText(raiz.getJSONObject("rates").getString("GBP")); }catch (JSONException e) { e.printStackTrace(); } } Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto MainActivity.java public String readStream(InputStreamReader in, int tamanho){ char[] texto = new char[tamanho]; try { in.read(texto); } catch (IOException e) { e.printStackTrace(); } return new String(texto); } Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto MainActivity.java public void run(){ URL url = null; HttpURLConnection urlConnection = null; try { url = new URL("http://api.fixer.io/latest?base=USD"); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.connect(); InputStreamReader in = new InputStreamReader(urlConnection.getInputStream()); raiz = new JSONObject(readStream(in,new Integer(urlConnection.getHeaderField("Content-Length")))); } Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto MainActivity.java catch (MalformedURLException e) { e.printStackTrace(); } catch (ProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }catch (JSONException e){ e.printStackTrace(); }catch (Exception e) { e.printStackTrace(); } finally { urlConnection.disconnect(); } } } Exemplo Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET" /> Exemplo É preciso dar permissão para acessar a Internet. Isso é feito colocando a linha acima no AndroidManifest.xml Programação para Dispositivos Móveis AULA 15: Consumindo WebService no Android Prof. Eduardo Luiz Pareto
Compartilhar