Buscar um endereço através do CEP é importante, tanto para manter as informações do seu cadastro corretas como para evitar fraudes e prejuizos.
Existem vários serviços na web para a busca de CEP, dentre eles podemos citar:
http://www.byjg.com.br/site/xmlnuke.php?xml=onlinecep
e
http://www.buscarcep.com.br/
Neste tutorial vamos aprender a usar o
http://www.buscarcep.com.br/ para pesquisar CEP's e auto-preencher formulários de cadastro, usando o lazarus. Tudo o que veremos aqui pode ser aplicado a qualquer outra tecnologia, desde que você saiba lidar com a "matéria prima" necessária.
Matéria prima:
1) Alguma biblioteca para se fazer requisições http a qualquer site.
2) Alguma biblioteca para manupulação de XML
3) Você deve se cadastrar no site
http://www.buscarcep.com.br/ e obter uma chave gratuita. A chave gratuita dá o direito a até 10 consultas por minuto. Guarde esta chave.
Primeiro passo: vamos usar a biblioteca synpase para fazer as requisições ao site. Para isso devemos fazer download da mesma no site oficial
http://www.ararat.cz/synapse/doku.php da mesma forma que fizemos no tutorial de lazarus + twitter
Você pode colocar os fontes em um diretório que esteja no search path do lazarus ou no mesmo diretório que o programa. Como nosso programa é simples e não pretendemos alterar a biblioteca vamos usar a segunda opção que é mais fácil. Caso use esta biblioteca em muitos projetos a primeira opção torna-se obrigatória.
Antes de começar a mecher com a biblioteca synapse precisaremos criar uma função de UrlEncode. Explicando: alguns caracteres não podem aparecer numa url porque são caracteres especiais, destinados a comandos. Esse é o caso da barra / (separa diretorios/recursos) da interrogação ? (separa url de parâmetros) e assim por diante.
Para que esses caracteres especiais possam ser colocados numa URL eles precisam ser codificados de uma forma especial que usa o caractere % como escape. Por exemplo o caractere
é representado por %20. Esse 20 é hexadecimal e corresponde ao decimal 32, ou seja, o código do espaço na tabela ascii.
Como a chave obtida no site pode ter caracteres especiais, criaremos uma função pública estática e global para transformar alguns caracteres especiais em caracteres "escapados" com %.
Usaremos dois vetores e um laço for aninhado para criar essa função. Não é a maneira mais performática, podemos melhorar isso depois, mas é a mais fácil de se entender e portar para outras linguagens.
function UrlEncode(url: DOMString): DOMString;
var
substitutos: array[1..20] of string = ('%21', '%2A', '%27', '%28', '%29', '%3B', '%3A', '%40', '%26', '%3D', '%2B', '%24', '%2C', '%2F', '%3F', '%25', '%23', '%5B', '%5D', '%2E');
substituidos: array[1..20] of char = ('!', '*', '''', '(', ')', ';', ':', '@', '&', '=', '+', '$', ',', '/', '?', '%', '#', '[', ']', '.');
i, j: integer;
tmp: string;
begin
for i := 1 to Length(url) do
begin
for j := 1 to 20 do
begin
if url[i] = substituidos[j] then
begin
tmp := substitutos[j];
break;
end
else
tmp := url[i];
end;
Result := Result + tmp;
end;
end;
Declare esta função na seção implementation e coloque seu cabeçalho na seção interface de sua unit.
function UrlEncode(url: DOMString): DOMString;
Repare aqui que o tipo de entrada e retorno da função é uma DOMString. DOMString nada mais é do que uma WideString de 16 bits normal. Você pode substituir por WideString ou adicionar a unit DOM no seu uses. Perceberá que na unit DOM DOMString está defibido como
DOMString = WideString;
Mais tarde falaremos da Unit DOM, necessária para se trabalhar com XML, mas já adiantando: sempre que trabalhar com XML estará trabalhando com Widestrings, que precisarão ser corretamente convertidas para utf-8 a fim de serem exibidas corretamente nos edits e memos.
Informações adicionais
UrlEncode no .net:
http://msdn.microsoft.com/pt-br/library/zttxte6w(VS.90).aspx
UrlEncode no php:
http://php.net/manual/en/function.urlencode.php
Página que codifica URL's:
http://www.albionresearch.com/misc/urlencode.php
A melhor referência sobre UrlEncode:
http://www.w3schools.com/TAGS/ref_urlencode.asp
Ir Para:
Parte 1 |
Parte 2 |
Parte 3 |
Parte 4 |
Parte 5
Comentários
Postar um comentário