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
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
Nenhum comentário:
Postar um comentário