Web Services

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.

Cc564890.Web_services_10_1(pt-br,MSDN.10).gif

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:

  1. Crie um novo projeto do tipo Windows Forms ;

  2. Na janela "Solution Explorer" clique com o botão direito no nome do projeto;

  3. Selecione "Add Web Reference";

  4. Digite o endereço da descrição do Web Service (http://soap.amazon.com/schemas/AmazonWebServices.wsdl ) na caixa "Address" e aperte Enter;

  5. 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;

  6. Depois de importado, vá novamente ao "Solution Explorer" e abra o nó Web References;

  7. Renomeie a referência para Amazon;

  8. Coloque os controles no formulário como acima;

Pronto, você já tem toda a Amazon.Com ao seu alcance.

Web_services_10_2.gif

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
downl.gif formato Word, 81 Kb    

Page view tracker