WebService na vida real: criando um aplicativo com o Visual Basic .NET para acessar o catálogo da Amazon
Por José Luiz Galego Jr (jgalego@s2digital.com.br), engenheiro, arquiteto de software especializado na plataforma Microsoft, trabalha com .NET há dois anos.
Rubens S. Meyer (rubens@s2digital.com.br), jornalista especializado em Tecnologia da Informação, é diretor da S2 Digital.
Veja neste artigo como acessar o Web Service da livraria virtual Amazon.Com, usando um aplicativo Windows feito com Visual Basic .NET. Demonstraremos como é fácil (e rápido) utilizar um Web Service para consultar pela Internet o catálogo de milhares de títulos da empresa. Faremos o caminho prático, passo a passo, para desenvolver a aplicação e checar o resultado final.
Conteúdo
Web Services
Nosso Aplicativo
Referenciando o Web Service
Chamando o Web Service
Criando o DataSet
Conclusão
Como obter o Kit para utilização de Web Services da Amazon.Com
Web Services
Web Services são provavelmente a tecnologia mais interessante para trocar informações pela Internet. Eles permitem que diferentes empresas, mesmo utilizando distintas tecnologias e plataformas, conectem-se de maneira padrão, executem procedimentos remotos sobre o proctocolo http, o que possibilita seu uso por meio de firewalls, sem necessidade de abrir brechas na segurança corporativa. Nesta demonstração acessaremos o Web Service da Amazon.Com utilizando o padrão SOAP.
Nosso Aplicativo
A figura abaixo mostra o resultado final do nosso aplicativo, um Windows Form, contendo uma caixa de texto para entrada da palavra a ser utilizada na busca, o botão para acionar a consulta e o DataGrid que mostra o título e o preço de cada produto. Para efeito de simplicidade, exibiremos somente os 10 primeiros produtos localizados.
Referenciando o Web Service
Em primeiro lugar, vamos referenciar o serviço no projeto a ser desenvolvido. O Visual Studio.NET tem ferramentas que facilitam a utilização de Web Services, construindo um "Proxy", por meio do qual é possível chamar qualquer Web Service como se fosse um objeto local.
Siga os seguintes passos:
-
Crie um novo projeto do tipo Windows Forms ;
-
Na janela "Solution Explorer" clique com o botão direito no nome do projeto;
-
Selecione "Add Web Reference";
-
Digite o endereço da descrição do Web Service (http://soap.amazon.com/schemas/AmazonWebServices.wsdl ) na caixa "Address" e aperte Enter;
-
Após receber o "contrato" do Web Service (uma representação em XML das chamadas), clique em "Add Reference" para importar a definição do Web Service;
-
Depois de importado, vá novamente ao "Solution Explorer" e abra o nó Web References;
-
Renomeie a referência para Amazon;
-
Coloque os controles no formulário como acima;
Pronto, você já tem toda a Amazon.Com ao seu alcance.
Chamando o Web Service
A linha abaixo dimensiona um objeto que representa o Web Service da Amazon.
Dim WSAmazon As New amazon.AmazonSearchService()
Criando o DataSet
O DataSet é uma novidade do ADO.NET, que mereceria quase um livro exclusivo. De maneira simplificada, podemos afirmar que um DataSet é a representação de dados em memória.
Neste aplicativo, pegaremos o resultado da busca feita pelo Web Service e montaremos o DataSet, criando a tabela, cada coluna e cada linha retornada.
O código abaixo deve ser digitado na rotina que é chamada pelo botão de busca:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'cria objeto do Web Service
Dim WSAmazon As New Amazon.AmazonSearchService()
'cria objeto de busca
Dim Busca As New Amazon.KeywordRequest()
Try
'buscaremos somente em livros
Busca.mode = "books"
Busca.keyword = TxtBusca.Text
'aqui deve ser colocado o código obtido junto a Amazon
Busca.devtag = "DE26G99EDGO8F"
Busca.version = "1.0"
'mostraremos somente a primeira página de retorno ( 10 primeiros itens )
Busca.page = 1
'aqui pode ser utilizado o código de parceria da Amazon
Busca.tag = "webservices-20"
Busca.type = "lite"
'faz a busca armazenando no objeto
Dim Resultado As Amazon.ProductInfo = WSAmazon.KeywordSearchRequest(Busca)
'criamos a tabela
Dim DataTable As New DataTable()
DataTable.TableName = "Produtos"
'primeira coluna da tabela
Dim DataColumn As New DataColumn()
DataColumn.ColumnName = "titulo"
DataTable.Columns.Add(DataColumn)
'segunda coluna da tabela
Dim DataColumn2 As New DataColumn()
DataColumn2.ColumnName = "preco"
DataTable.Columns.Add(DataColumn2)
'objeto para linhas da tabela
Dim DataRow As DataRow
Dim i As Integer
'cria tantas linhas quantos livros forem retornados
For i = 0 To Resultado.Details.GetUpperBound(0)
DataRow = DataTable.NewRow
DataRow("titulo") = Resultado.Details(i).ProductName
DataRow("preco") = Resultado.Details(i).OurPrice
DataTable.Rows.Add(DataRow)
Next
'cria DataSet
Dim DataSet As New DataSet()
'adiciona tabela de produtos
DataSet.Tables.Add(DataTable)
'assinala DataSet ao DataGrid
AmazonBooksGrid.DataSource = DataSet
AmazonBooksGrid.DataMember = "Produtos"
Catch ex As System.Web.Services.Protocols.SoapException
MsgBox(ex.Message)
End Try
End Sub
Colocamos toda a rotina dentro de um bloco Try/Catch para eventuais exceções relativas ao protocolo SOAP. Note que para efeito de demonstração, estamos consultando apenas o catálogo de livros e exibindo somente os dez primeiros títulos encontrados, mas isso pode ser facilmente modificado.
Formatando o DataGrid com estilos
O DataGrid permite que apliquemos estilos, definindo várias características de cada coluna. Abaixo formatamos as duas colunas do DataGrid. Este código deve ser inserido no evento Load do Form:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ts1 As New DataGridTableStyle()
ts1.MappingName = "Produtos"
Dim myDataCol1 As New DataGridTextBoxColumn()
myDataCol1.HeaderText = "Título"
myDataCol1.Alignment = HorizontalAlignment.Left
myDataCol1.Width = 400
myDataCol1.MappingName = "titulo"
Dim myDataCol2 As New DataGridTextBoxColumn()
myDataCol2.HeaderText = "Preço"
myDataCol2.Alignment = HorizontalAlignment.Right
myDataCol2.Width = 52
myDataCol2.MappingName = "preco"
ts1.GridColumnStyles.Add(myDataCol1)
ts1.GridColumnStyles.Add(myDataCol2)
AmazonBooksGrid.TableStyles.Add(ts1)
End Sub
Com o uso de estilos, podemos formatar um DataGrid para que atenda qualquer necessidade.
Conclusão
Para executar o aplicativo, digite uma palavra e clique no botão de busca. Rapidamente você verá, em tempo real, uma lista de até 10 livros e respectivos preços, consultados diretamente da Amazon.Com.
Com a solução desenvolvida, é possível criar filiais virtuais da empresa, pesquisar e atualizar informações de forma totalmente on-line, caracterizando um sistema realmente distribuído. Dá para imaginar um mundo de novas possibilidades se abrindo, especialmente num ambiente corporativo em que integração e agilidade são diferenciais competitivos...
Para finalizar, gostaríamos de ressaltar que o Visual Studio .NET não é pré-requisito obrigatório para criar nosso aplicativo. Mas sem ele o trabalho seria muito mais difícil (e demorado). Com essa ferramenta, ganhamos em produtividade, tornando os Web Services muito mais robustos e acessíveis às empresas.
Como obter o Kit para utilização de Web Services da Amazon.Com
Vá até http://www.amazon.com/webservices e siga os passos. Baixe o kit com a documentação e depois obtenha seu próprio código para utilizar o Web Service.
Faça o download deste documento:
WebService na vida real: criando um aplicativo com o Visual Basic .NET para acessar o catálogo da Amazon
formato Word, 81 Kb