Vamos ver agora uma das maneiras de fazer isso. Para tal, utilizaremos uma das facilidades que os mercados-sócios do mercado livre possuem. Uma base de pesquisa de produtos em XML.
Para mais informações sobre o programa de afiliados do mercado livre acesse o link abaixo:
[inter]
http://pmsapp.mercadolivre.com.br/jm/pms[/inter]
Sobre a requisição do documento XML
A busca de produtos acontece por de parâmetros passados na URL de requisição do XML. Abaixo segue a URL básica e a listagem dos demais parâmetros que podem ser utilizados na URL para gerar a requisição.
Apenas esclarecendo que o torna-se mercado-sócio você terá acesso ao documento completo para a implementação do XML
Estrutura básica para busca de produtos:
http://www.mercadolibre.com.br/jm/searchXml
Parâmetros
A URLs para as categorias é:
http://www.mercadolivre.com.br/jm/categsXml
Parâmetros
Vamos ao código
Crie um projeto de web site e adcione uma classe chamada NegocioXml.
Abaixo a Listagem 01 mostra a implementação da classe.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
///
/// Classe de negocio baseada no Xml do mercado livre
///
public class NegocioXml
{
#region Declarações
protected string strXmlCategoria;
protected string strXmlProduto;
protected string CODSITE;
protected DataSet objXmlData;
#endregion
public NegocioXml()
{
}
///
/// Retorna a o conteudo da chave UrlProdutos do Web.Config
///
protected string UrlProdutos
{
get { return ConfigurationManager.AppSettings["UrlProdutos"]; }
}
///
/// Retorna a o conteudo da chave UrlCategorias do Web.Config
///
protected string UrlCategorias
{
get { return ConfigurationManager.AppSettings["UrlCategorias"]; }
}
///
/// Retorna um DataTable com as lista de produtos de uma determinada categoria,
/// a partir da consulta ao Xml do Mercado livre
///
///
///
public DataTable ListaProdutos(string IdCategoria)
{
CODSITE = "MLB";
strXmlProduto = this.UrlProdutos + "?as_categ_id=" + IdCategoria + "&as_qshow=10";
objXmlData = new DataSet();
objXmlData.ReadXml(strXmlProduto);
return objXmlData.Tables["item"];
}
public DataTable ListaProdutosFiltro(string Filtro)
{
CODSITE = "MLB";
strXmlProduto = this.UrlProdutos + "?as_qshow=10&as_filtro_id=" + Filtro;
objXmlData = new DataSet();
objXmlData.ReadXml(strXmlProduto);
return objXmlData.Tables["item"];
}
///
/// Retorna um DataView com as lista de produtos de uma determinada categoria,
/// a partir da consulta ao Xml do Mercado livre
///
///
Id da categoria pesquisada
///
Um DataView com os prosutos
public DataView ListaCategorias()
{
CODSITE = "MLB";
strXmlCategoria = this.UrlCategorias + "?as_site_id=" + CODSITE + "&as_only_main=Y";
objXmlData = new DataSet();
objXmlData.ReadXml(strXmlCategoria);
return objXmlData.Tables["category"].DefaultView;
}
Listagem 01 – Implementação da classe NegocioXml.
Todos os métodos acima são baseados na leitura de arquivos XML a partir de sites remotos (no caso o www.mercadolivre.com.br).
Adicione ao web.config os parâmetros com as URL’s de acesso ao XML do Mercado Livre conforme Listagem 02.
Listagem 02.
Agora vamos codificar a página default.aspx acresentando uma tabela com 1 linha e 2 colunas. Na colunas da esquerda coloque um GridView chamado gvCategorias e na coluna da direita coloque um DataList chamado dlProdutos.
As veja na Listagem 03 as propriedades alteradas para o gvCategorias e o dlProdutos.
Listagem 03 – Propriedades alteradas
Adicione no item template do gvCategorias um controle Hyperlink.
No item template do dlProdutos adicione um controle Hyperlink e um controle Imagem.
Na Listagem 04 mostra a implementação completa do gvCategorias e do dlProdutos
<%# Eval("name") %>
|
<%#Eval("title")%>
|
Listagem 04 – Implementação do gvCategorias e dlProdutos
Agora só nos restando programar quando e como serão carregados os objetos citados acima. No load da página vamos carregar o gvCategorias apenas quando não for um PostBack. Da mesma forma vamos carregar o dlProdutos. Na Listagem 05 segue a implementação dos métodos.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.CarregaCategorias();
string strIdCategoria = Request.QueryString["id_cat"];
if (strIdCategoria != "" && strIdCategoria != null)
{
this.CarregaProdutosPorCategoria(strIdCategoria);
}
}
}
protected void CarregaCategorias()
{
objXml = new NegocioXml();
gvCategorias.DataSource = objXml.ListaCategorias();
gvCategorias.DataBind();
}
protected void CarregaProdutosPorCategoria(string IdCategoria)
{
objXml = new NegocioXml();
dlProdutos.DataSource = objXml.ListaProdutos(IdCategoria);
dlProdutos.DataBind();
}
protected void CarregaProdutos24Horas()
{
objXml = new NegocioXml();
dlProdutos.DataSource = objXml.ListaProdutosFiltro("24_HS");
dlProdutos.DataBind();
}
Listagem 05 – Código da página default.aspx.cs
Veja na figura 01 o resultado final.
Figura 01 – Resultado da aplicação
Dessa forma vimos o quanto é simples trabalhar com leitura de arquivos xml dinâmicos em sites remotos no C# 2.0 + Visual Studio 2005.
Também aprendemos uma maneira mais otimizada de ganhar dinheiro com publicidade na web
Conheça nosso parceiro:
Por Daniel Santiago da Silva Cazé
Daniel Santiago da Silva Cazé ([email protected]) trabalha com desenvolvimento de aplicações web para intranet e SIG's a 4 anos. Desenvolve trabalhos de DataMining e administração de dados com SQL Server 2000/2005 e MySQL. Atualmente entusiasta em Java 3D para jogos eletrônicos.