ASP.NET 2.0 - Usando o web service da Amazon.com
Não custa nada começar com uma definição de web service dada pela Wikipédia: :
"Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Os Web services são componentes que permitem às aplicações enviar e receber dados em formato XML. Cada aplicação pode ter a sua própria "linguagem", que é traduzida para uma linguagem universal, o formato XML.
Para as empresas, os Web services podem trazer agilidade para os processos e eficiência na comunicação entre cadeias de produção ou de logística. Toda e qualquer comunicação entre sistemas passa a ser dinâmica e principalmente segura, pois não há intervenção humana."
Se você quer saber como criar web services na plataforma .NET leia meus artigos sobre o assunto:
Neste artigo eu vou mostrar como você pode usar um web service que foi criado e disponibilizado pela Amazon.com.
Para poder usar um web service da Amazon você tem que se registrar como um usuário e usar sua chave de acesso de identificação - ID - para poder efetuar requisições usando o web service.
Acesse o site www.amazon.com/gp/aws/landing.html e efetue o seu registro, ao final você a tela abaixo informando que o seu registro foi efetuado com sucesso. Você deverá receber um identificador de chave de acesso no seu email.
Após efetuar o registro você pode continuar com o projeto incluindo uma referência a um web service para poder usar o serviço.
Vou usar o Visual Web Developer(VWD) para criar uma aplicação ASP.NET bem simples onde você irá obter informações sobre livros do site da Amazon.com.
Abra o VWD e no menu File selecione a opção New Web Site. Será criado um projeto web contendo uma página chamada default.aspx.
- Clique com botão direito do mouse sobre o nome do projeto e selecione a opção - Add Web Reference;
- Na janela Add Web Reference, informe a URL - http://webservices.amazom.com/AWSECommerceService/AWSECommerceService.wsdl e clique no botão Go:
Se o documento WSDL for encontrado e recebido com sucesso, você poderá incluí-lo no seu projeto clicando no botão -Add Reference - ver figura abaixo- vou usar o nome padrão com.amazon.webservices.
Ao final, se você olhar na janela Solution Explorer deverá visualizar a referência incluída:
Com isto já temos a referência ao web service da Amazon incluída no nosso projeto e pronta para ser usada.
Nota: Veja a documentação atualizada dos webservices da Amazon.com no link : http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=19
Selecione a página default.aspx na janela Solution Explorer e no modo Design inclua, a partir da ToolBox, os componentes: ListBox, Button, TextBox e Label conforme leiaute abaixo:
Vamos ao código do projeto:
Você deve declarar o seguinte namespace no seu projeto:
Imports
com.amazon.webservicesA seguir vamos declarar as seguintes variáveis objeto que serão usadas no projeto:
Dim
aws As New AWSECommerceServiceFinalmente no evento Click do botão de comando inclua o seguinte código :
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
requisicao.Power = "title:" + TextBox1.Text requisicao.ResponseGroup = New String() {"Small"} requisicao.Sort = "salesrank" Dim requisicoes As ItemSearchRequest() = New ItemSearchRequest() {requisicao} Dim procurarItem As ItemSearch = New ItemSearch
procurarItem.Request = requisicoes
Dim info As Items = resposta.Items(0)
Dim items As Item() = info.Item ListBox1.Items.Clear()
Dim item As Item = items(i) ListBox1.Items.Add("Título: " + item.ItemAttributes.Title) System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1) End While Catch ex As ExceptionListBox1.Text = (ex.ToString) End Try End Sub |
Como funciona ?
Primeiro criamos uma instância do serviço e do tipo de busca que desejamos realizar através das seguintes declarações:
Dim
aws As New AWSECommerceServicePreenchemos o nosso objeto requisicao com os detalhes dos tipos de produtos que queremos obter:
requisicao.SearchIndex = "Books"
requisicao.Power = "title:" + TextBox1.Text
requisicao.ResponseGroup = New String() {"Small"}
requisicao.Sort = "salesrank"
- SearchIndex define um
catálogo específico que vamos procurar.
- Power é um parâmetro que permite realizar consultas complexas para
livros usando o formato key:value.
onde key pode incluir:
asin, author, author-exact, author-begins, keywords,
keywords-begin, language, publisher, subject, subject-words-begin,
subject-begins, title, title-words-begin, and title-begins.
No nosso exemplo - "title:" + TextBox1.Text - iremos retornar o título do livro cujo conteúdo coincida com o critério informado e usado para criar as palavras-chaves. Poderíamos ter usado outra chave como "author:" ou efetuar uma combinação para criar consultas mais complexas.
O parâmetro Power somente pode ser usado quando SearchIndex for definido como books.
Poderíamos ter usado a seguinte
definição de busca para retornar todos os livros:
requesicao.Keywords = TextBox1.Text
- ResponseGroup permite refinar o resultado de nossa busca para conter somente a informação que desejamos. Assim :
Small pode ser usado para incluir todos os dados necessários para exibir um item típico na lista de resultados (nome do produto, autor, etc.)
Nota: Para detalhes veja o documento em : http://docs.amazonwebservices.com/AWSEcommerceService/2006-11-14/
- Sort define como será ordenada a lista de retorno da busca; "salesrank" irá apresentar os títulos dos livros por ordem de vendas.
Após toda esta definição incluímos o nosso objeto requisicao em array de requisição. Usando esta estrutura fica mais fácil tratar com requisições diversas:
Dim requisicoes As ItemSearchRequest() = New ItemSearchRequest() {requisicao}
O passo seguinte é criar um objeto ItemSearch que encapsulará nossa requisição de busca e os detalhes de nosso registro feito na Amazon.com.(Na propriedade AWSAccessKeyId deverá ser preenchida com o seu ID obtido na Amazon.)
Dim procuraItem As ItemSearch = New ItemSearch
procuraItem.AWSAccessKeyId = "XXXXXXXXXXXXXXXXX"
procuraItem.Request = requisicoes
Finalmente podemos executar nossa requisição usando o serviço instanciado aws. O resultado da consulta será armazenado no objeto ItemSearhResponse onde o produto estará disponível através do objeto Item.
Dim response As ItemSearchResponse = aws.ItemSearch(procuraItem)
Como estamos enviando apenas uma requisição o nosso resultado estará armazenado no primeiro item da coleção :
Dim info As Items = response.Items(0)
Dim items As Item() = info.Item
Percorrendo a coleção items pode obter os valores específicos do nosso resultado através da propriedade ItemAttributes de um item. O nosso exemplo exibe o título do livro no controle ListBox.
While i < items.Length
Dim item As Item = items(i)
ListBox1.Items.Add("Título: " + item.ItemAttributes.Title)
System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1)
End While
O resultado obtido após a execução do projeto pode ser visto na figura a seguir:
Eu mostrei o "caminho feliz" de como você pode usar um web service pronto , no caso o web service da Amazon. Para incrementar o projeto e torná-lo mais funcional consulte a documentação no site da Amazon e use seu talento...
Pegue o projeto completo aqui: wsAmazon.zip
Até o próximo artigo ASP.NET....
José Carlos Macoratti