Artigo Clube Delphi Edição 30 - Google em Delphi e Kylix

Artigo da Revista Clube Delphi Edição 30.

Esse artigo faz parte da revista Clube Delphi edição 30. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.

Google em Delphi e Kylix

Pesquisas na web usando Web Services

Muitas vezes, ao efetuar pesquisas na Web usando o site de busca Google (www.google.com), pensei em armazenar os resultados das pesquisas em um banco de dados para recuperar mais tarde, ou mesmo manter um arquivo do que foi pesquisado.

Uma solução seria salvar as páginas de respostas e processá-las, gravando os links diretamente em um banco de dados. Porém, este procedimento seria entediante, pois seria necessário selecionar cada página, salvar seu conteúdo com nome diferente e processá-la. A operação estaria sujeita a erros, caso houvesse modificações na estrutura da página.

Além disso, se fosse necessário incluir uma pesquisa automatizada em um programa, não se poderia fazê-lo desta maneira, pois o usuário precisaria salvar a página em um determinado local, para que ela pudesse ser processada. Sem dúvida, esta não é uma maneira simples de adicionar resultados de pesquisas em um programa. Seria necessário algo diferente.

A solução vem com um Web Service disponibilizado pelo Google, permitindo enviar uma consulta que retorna os resultados, de forma que se possa alterá-los.

Web Services

Veja aqui alguns conceitos de Web Services e exemplos básicos de seu uso. Uma introdução detalhada aos Web Services pode ser vista no artigo de Fernando Vasconcelos Mendes, na Edição 27 da ClubeDelphi.

Um Web Service permite que aplicações localizadas na internet, escritas em linguagens diferentes, possam se comunicar e trocar informações. Esta transferência é feita com mensagens codificadas em XML, o que torna o processo independente de linguagem e de plataforma.

Da mesma maneira que, ao usarmos um browser para navegar pela web, não estamos preocupados se do outro lado está um servidor Linux, Windows ou mesmo um mainframe, ou se há um programa em Delphi ou Java gerando páginas para nós, a mesma coisa acontece com um Web Service.

Ao desenvolver um Web Service, publica-se uma interface usando a linguagem WSDL (Web Service Description Language), um arquivo XML que descreve as funções exportadas pelo serviço e suas assinaturas. Em outras palavras, o arquivo WSDL descreve os métodos disponíveis, que podem ser acessados por outros programas.

Serviço BabelFish

O site www.xmethods.net contém a localização de diversos Web Services, escritos em diversas linguagens. Lá podemos ver que existe um Web Service que acessa o BabelFish, para tradução de palavras. A WSDL para este serviço está localizada em:

www.xmethods.net/sd/2001/BabelFishService.wsdl.

Esta WSDL especifica as funções e seus parâmetros de uma maneira independente de linguagem. Veja o código na Listagem 1. Um cliente do Web Service usará esta WSDL para acessar o Web Service. No caso, a tag definitions name, na segunda linha, indica o nome do serviço, BabelFishService, que tem duas mensagens, BabelFishRequest e BabelFishResponse. A primeira tem dois parâmetros, translationmode e sourcedata, ambos do tipo String. E a segunda, um parâmetro return, também do tipo String:

 

  <definitions name="BabelFishService" ...>

  ...

<message name="BabelFishRequest">

<part name="translationmode" type="xsd:string"/> 

<part name="sourcedata" type="xsd:string"/>

</message>

<message name="BabelFishResponse">

<part name="return" type="xsd:string"/>

</message>

 

Listagem 1. WSDL para acesso ao BabelFish

<?xml version="1.0"?>

  <definitions name="BabelFishService"

xmlns:tns="http://www.xmethods.net/sd/BabelFishService.wsdl"

targetNamespace="http://www.xmethods.net/sd/BabelFishService.wsdl"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns="http://schemas.xmlsoap.org/wsdl/">

<message name="BabelFishRequest">

<part name="translationmode" type="xsd:string"/>

<part name="sourcedata" type="xsd:string"/>

</message>

    <message name="BabelFishResponse">" [...] continue lendo...

Artigos relacionados