Artigo .net Magazine 42 - Preenchendo formulários Web programaticamente

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (3)  (0)

A solução apresentada neste artigo consiste em fazer via código o que um usuário faria normalmente via Web Browser.

capaNET42.JPG

Clique aqui para ler todos os artigos desta edição

Boa Idéia

Preenchendo formulários Web programaticamente

 

Este artigo discute

Este artigo usa as seguintes tecnologias

·         Obtendo o conteúdo de páginas;

·         A classe WebRequest;

·         Preenchendo formulários via código.

Visual Studio 2005, C#.

 

O uso de arquivos texto (TXT) foi, ou provavelmente ainda é, uma das formas mais conhecidas e utilizadas para comunicar diferentes tipos de aplicação. Imagine um cenário, por exemplo uma empresa A usando um sistema em .NET, que precisa enviar informações sobre parcelas geradas para um sistema B legado, escrito em Clipper ou Cobol. O uso de TXT é inevitável.

Mas um personagem estava para surgir e mudar esse cenário. Se o leitor já está pensando no termo XML, acertou. Podemos dizer que o XML estende o formato TXT, já que também é expresso em forma textual, porém tem duas grandes diferenças: 1) Expõe seus dados em um formato mais lógico e hierárquico; 2) Existem inúmeros parsers prontos para processar arquivos XML.

A tendência é que a comunicação entre sistemas heterogêneos seja feita através de XML, já que esse é um formato amplamente aceito e padronizado. E quando se fala em comunicar aplicativos via XML de forma on-line, então entra outra nova (e nem tão nova assim) e importante tecnologia: Web Services (chamado a partir daqui simplesmente de WS).

Por exemplo, imagine um cenário onde construímos um sistema para uma agência de turismo. Poderíamos integrar em nosso WebSite uma consulta on-line via WS aos sites das companhias áreas que oferecem as passagens mais baratas para o horário desejado pelo cliente.

Ao invés de entrarmos site por site de cada companhia, nosso sistema faz isso automaticamente via WS (ou usando a técnica que veremos neste artigo). E poderia integrar com outro WS para já disponibilizar ao cliente um hotel próximo ao local de chegada que tenha disponibilidade para um horário X. Tudo automático!

Seria uma maravilha se tudo o que precisássemos integrar em nosso sistema pudesse ser obtido através da comunicação via WS. É bem mais simples receber dados em XML e processá-los com um parser (através das classes do .NET).

Mas a realidade mostra um cenário totalmente diferente. Quase tudo o que vemos é baseado em HTML (browser) e não XML, o que significa que para usar determinado serviço de outra empresa, você precisa abrir um browser, preencher informações e consultar. Isso dá um fim ao processo que precisaria ser feito de forma automática. Ou pelo menos deveria, até você ler este artigo.

Quando usamos um browser para utilizar um serviço de uma empresa, estamos usando o que chamamos de intercâmbio B2C (Businness to Consumer - pt.wikipedia.org/wiki/B2C). O usuário final é responsável por obter a informação de um browser que recebe HTML.

Quando a comunicação é feita de forma automática por um sistema via WS e XML, e o usuário final acessa o serviço via nossa aplicação e não diretamente o serviço, dizemos que a comunicação é feita através de B2B (Businness to Business - pt.wikipedia.org/wiki/B2B).

Por exemplo, se você acessa o site da DevMedia para comprar edições de revistas anteriores que por ventura não tenha em sua coleção, está usando o B2C. Se está, por exemplo, usando o WS dos Correios (veja edição 36) para exibir dados de endereço do cliente em seu sistema, está usando B2B.

Mas onde quero chegar com toda essa introdução? O fato é que precisamos cada vez mais construir aplicações B2B para agregar funcionalidades as nossas aplicações, porém, infelizmente, a maioria das coisas que encontramos hoje na Web não são disponibilizadas na forma de WS (B2B), mas somente para usuários finais através de um browser HTML (B2C).

O que nos resta é criar um mecanismo para usar serviços B2C como se fossem B2B.

Criando solicitações HTTP

A solução apresentada neste artigo consiste em fazer via código o que um usuário faria normalmente via Web Browser. Ou seja, podemos usar em nossas aplicações serviços disponibilizados não como WS, mas em forma de Web Sites. Como os dados trafegam sobre o HTTP em formato HTML, e não XML, é preciso realizar um trabalho extra e “braçal”.

Imagine um usuário preenchendo um cadastro em um Web Site, onde ele informa os campos em um formulário e clica em um botão Gravar. Considere que você precisa transferir todos os registros da sua base de clientes para esse Web Site.

O que fazemos é, para cada registro, preencher os dados do formulário programaticamente e emitir um comando ao Web Site para clicar no botão Gravar. Ou seja, estamos fazendo tudo via código.

Estamos simulando o papel de um browser, criando uma requisição HTTP no braço (através da classe WebRequest do .NET, do namespace System.Net) e obtendo o valor de retorno. Aplicações desse tipo também são conhecidas como robots.

Como o valor de retorno é HTML, e não XML, normalmente o tráfego de dados será bem mais intenso, visto que em HTML trafegam não somente dados, mas informações de layout, banners, figuras, que normalmente não são necessárias em uma aplicação B2B. Além disso, é preciso fazer o parse manual do arquivo HTML de retorno, procurando linha a linha (ou tag a tag) por um valor desejado.

Os exemplos demonstrados neste artigo são bastante interessantes e vão deixar mais clara a idéia aqui proposta, que se usada com sabedoria, poderá agregar um valor muito grande as suas aplicações Web ou mesmo Desktop.

As aplicações aqui construídas serão do tipo Windows Forms, mas podem facilmente serem feitas utilizando-se ASP.NET Web Forms, caso queira.

 

Advertência: Não é o objetivo deste artigo demonstrar exemplos para uso ilícito da tecnologia, como fazer mau uso de serviços oferecidos por empresas, sobrecarregar servidores - D.O.S, preencher cadastros com dados falsos, burlar votações on-line, fazer spam automático etc.

O objetivo único e principal aqui é mostrar como você pode integrar suas aplicações com Web Sites que forneçam serviços úteis.

 

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?