VB .NET - Consumindo um Web Service - Correios (MetroFramework)
Neste artigo vou mostrar como consumir um Web Service em uma aplicação Windows Forms que usa o estilo Metro usando a linguagem VB .NET. |
Se você deseja ou precisa usar o estilo Metro em aplicações Windows Forms você pode usar o framework MetroFramework que fornece os recursos para criar interfaces nesse estilo de forma relativamente simples e gratuita. Veja o meu artigo sobre como usar o MetroFramework: VB .NET - Implementando interfaces ao estilo Metro com ... - Macoratti
Imagine um componente cujos recursos possam ser acessados na Internet via TCP/IP, independente do Sistema Operacional e de qualquer lugar como se o componente estivesse instalado na sua máquina ; um componente que não sofresse as restrições dos Firewalls e que fosse totalmente integrado ao seu ambiente. Estou falando de WebServices.
Vamos consumir um web service existente e disponibilizado pelos correios para consulta de CEP na aplicação Windows. Para fazer a comunicação com o serviço vamos usar o protocolo SOAP (Simple Object) que permite a troca de informações de forma semelhante ao protocolo HTTP com GET e POST.
O serviço de consulta de CEP oferecido pelo web service dos correios esta disponível no seguinte end point : https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl
Chamando esta URL em um navegador iremos obter o seguinte resultado:
Notou a palavra wsdl na URL ?
O WSDL ou Web Services Description Language é um padrão baseado em XML que serve para descrever os Web Service, ele contém os métodos públicos do serviço.
No nosso exemplo vamos informar o CEP e obter as informações para o endereço, complemento, cidade, bairro e uf.
Então vamos ao que interessa...
Recursos Usados :
Criando o projeto Windows Forms e Incluindo a referência ao Web Service
Abra o VS 2017 Community e crie um novo projeto (File-> New Project) usando a linguagem Visual C# e o template Windows Classic Desktop ->Windows Forms Application(.NET Framework)
Informe um nome a seu gosto. Eu vou usar o nome Vbn_WebService.
Agora para poder consumir o web service em nossa aplicação vamos incluir uma referência ao serviço no projeto
Clique com o botão direito do mouse sobre o projeto e a seguir clique em Add -> Service Reference;
Na janela Add Service Reference copie e cole o endereço de atendimento do web service e clique em Go:
Altere o nome em Namespace para CorreioService e clique no botão OK.
No menu Build clique em Rebuild Solution.
Você deverá visualizar no projeto Windows Forms a referência ao serviço conforme mostra a figura abaixo:
Definindo o modelo de domínio
Crie uma pasta Model no projeto e a seguir crie o arquivo Endereco.cs onde vamos definir a classe Endereco que representa o nosso modelo de domínio, ou seja o resultado da consulta.
O código segue abaixo:
Public Class Endereco
Public Property Descricao() As String
Public Property Complemento() As String
Public Property Bairro() As String
Public Property Cidade() As String
Public Property EstadoUF() As String
End Class
|
Definindo a interface com o usuario usando os recursos do MetroFramework
Vamoa agora incluir a referência à biblioteca do MetroFramework em nosso projeto via Nuget.
No menu Tools clique em Nuget Package Manager e a seguir em Manage Nuget Packages for Solution;
A seguir informe metromodernui e clique em Browse;
Selecione o pacote encontrado, marque o projeto onde deseja instalar, e clique no botão Install; (A versão atual no momento que escrevi este artigo era a v1.4.0)
Após instalar o pacote você deve incluir os controles na ToolBox conforme eu mostro no neste artigo: VB .NET - Implementando interfaces ao estilo Metro com ... - Macoratti
Selecione o formulário Form1.vb no projeto e expanda os objetos clicando em InitializeComponent();
Substitua na palavra-chave Inherits System.Windows.Forms.Form por MetroFramework.Forms.MetroFrom. Salve e clique em Form1.vb para ver como ficou a interface:
A partir da ToolBox vamos incluir no formulário os seguintes controles:
Disponha os controles conforme o leiaute da figura abaixo:
Implementando o código para consumir o web service
Consumir o web service é bem simples. Com apenas duas linhas de código podemos fazer isso.
Dim correios = New CorreioService.AtendeClienteClient()
Dim consulta = correios.consultaCEP("13120-125")
Basta criar uma instância da classe CorreioService, método
AtendeClienteClient, e a seguir usar o método consultaCEP().
No nosso exemplo vamos usar a classe Endereco para obter os dados retornados e exibir o resultado no formulário.
No código do evento Click do botão de comando Consultar CEP inclua o código abaixo:
Public Class Form1
Private Sub btnConsultarCEP_Click(sender As Object, e As EventArgs) Handles btnConsultarCEP.Click
Dim resultado As Endereco = Nothing
If Not String.IsNullOrEmpty(txtCep.Text) Then
Try
Using correios = New CorreioService.AtendeClienteClient()
Dim consulta = correios.consultaCEP(txtCep.Text.Replace("-", ""))
If consulta IsNot Nothing Then
resultado = New Endereco()
resultado.Descricao = consulta.end
resultado.Complemento = consulta.complemento
resultado.Bairro = consulta.bairro
resultado.Cidade = consulta.cidade
resultado.EstadoUF = consulta.uf
End If
End Using
txtEndereco.Text = resultado.Descricao
txtComplemento.Text = resultado.Complemento
txtCidade.Text = resultado.Cidade
txtBairro.Text = resultado.Bairro
txtUF.Text = resultado.EstadoUF
Catch ex As Exception
MetroFramework.MetroMessageBox.Show(Me, ex.Message, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Else
MetroFramework.MetroMessageBox.Show(Me, "Dados inválidos. Informe o CEP." & vbNewLine & "Ex: 12345-678 ou 12345678", "Aviso",
MessageBoxButtons.OK, MessageBoxIcon.Information, 120)
End If
End Sub
End Class
|
Agora é só alegria...
Executando o projeto temos o seguinte resultado:
Temos assim a nossa aplicação Windows Forms usando o estilo Metro e consumindo um web service.
Pegue o código da solução aqui: Vbnet_WebServices.zip (sem as referências)
O Senhor reinará eterna e perpetuamente; Êxodo 15:18
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - Implementando interfaces ao estilo Metro com ... - Macoratti
ASP .NET - Consumindo Web Services em Windows Forms - Macoratti