Neste artigo vou mostrar como consumir um serviço REST para previsão do tempo usando a linguagem VB .NET. |
Eu já apresentei os conceitos sobre como acessar web services e/ou serviços API REST nestes artigos:
Hoje vou focar na utilização prática de como acessar um serviço web e obter resultados em uma aplicação Windows Forms usando a linguagem VB .NET.
Como exemplo eu vou acessar o serviço da OpenWeatherMap API service que permite obter a previsão de tempo (e mapas) para uma determinada localidade e exibir os dados retornados.
Para pode usar o serviço grátis você tem que se registrar e obter uma API Key (AppId) neste link: https://home.openweathermap.org/users/sign_in
A documentação de como usar a API para previsão do tempo pode ser consultada neste link: https://openweathermap.org/current#current_JSON
Vamos ao trabalho...
Recursos usados:
Nota: Baixe e use a versão Community 2017 do VS ela é grátis e é equivalente a versão Professional.
Criando o projeto no Visual Studio 2017 Community
Abra o Visual Studio Community 2017 e clique em New Project;
Selecione Visual Basic, o template Windows Classic Desktope a seguir Windows Forms App(.NET Framework);
Informe o nome Vbn_WeatherApi e clique no botão OK;
Criando a interface com o usuário
A seguir defina no formulário Form1.vb o leiaute conforme mostrado na figura abaixo:
O
fluxo de processamento é o seguinte: 1 - O usuário seleciona uma cidade no combobox cboCidades 2 - Clica no botão de comando btnPrevisaoTempo 3 - O serviço REST é acessado e os dados são obtidos 4 - Os dados são formatados e exibidos no formulário |
Criando as classes de domínio para obter os dados desserializados
Precisamos criar as classes para obter os dados que serão obtidos do serviço REST e desserializados no formato JSON.
Essa tarefa fica bem simples se usarmos o recurso disponíbilizado http://json2csharp.com/. Aqui podemos gerar as classes C# a partir do JSON.
Então basta enviar uma requisição, obter o JSON retornar e a seguir copiar e colar este JSON no site indicado para gerar as classes C#.
Basta copiar as classes geradas e converter para o código VB .NET. (Use este link para converter: http://converter.telerik.com/)
Para o nosso exemplo as classes geradas foram:
Public Class WeatherInfo Public Property city As City Public Property list As List(Of List) End Class Public Class City Public Property name As String Public Property country As String End Class Public Class Temp Public Property day As Double Public Property min As Double Public Property max As Double Public Property night As Double End Class Public Class Weather Public Property description As String Public Property icon As String End Class Public Class List Public Property temp As Temp Public Property humidity As Integer Public Property weather As List(Of Weather) End Class |
Criando a classe para acessar o serviço e obter as informações
Para poder definir o código da classe que acessa o serviço temos que incluir uma referência a API Newtonsoft.Json no projeto via Nuget:
Vamos criar uma classe chamada PrevisaoTempo.vb no projeto e definir dois métodos:
Obs : Para usar o segundo método você precisa incluir uma referência a System.RunTime.Serialization no seu projeto.
Nota: Eu vou implementar somente o primeiro método na interface deixando o segundo como um exercício para você fazer.
Imports System.IO Imports System.Net Imports System.Runtime.Serialization.Json Imports System.Text Imports Newtonsoft.Json Public Class PrevisaoTempo Shared appId As String = "__o _numero_da_sua_API_KEY" Public Shared Function PrevisaoTempoCidade(ByVal nome As String) As WeatherInfo Dim client = New WebClient() Dim url As String = Try Public Shared Function PrevisaoTempoCoordenadas(latitude As Double, longitude As Double, quantidade As Integer) As WeatherInfo Dim url = String.Format(baseUrl, latitude, longitude, quantidade) & "APPID=" & appId Try ' Cria o serializados Json e trata a resposta End Class |
Executando o projeto
A seguir temos o código do formulário e do botão de comando - btnPrevisaoTempo - que irá processar o resultado e exibir no formulário:
Public Class Form1 Private Sub btnPrevisaoTempo_Click(sender As Object, e As EventArgs) Handles btnPrevisaoTempo.Click
Try lblCidade.Text = weatherInfo.city.name + "," + weatherInfo.city.country End Sub |
Executando o projeto e selecionando uma cidade iremos obter o resultado a seguir :
Pegue o projeto aqui : Vbn_WeatherAPI.zip (sem as referências)
(Disse Jesus) "Se vós estiverdes em mim,
e as minhas palavras estiverem em vós, pedireis tudo o que quiserdes, e vos será
feito. "
João 15:7
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
VB .NET : Windows Forms - Consumindo uma Web API - Macoratti