Capturando um endereco a partir do CEP

ola pessoal, to desenvolvendo uma aplicacao desktop em java comercial. Eu queria que qdo o usuario digitasse o cep de um endereco o sistema ja fizesse uma busca e carregasse o endereco nos devidos campos. Tenho algumas duvidas:

1 - De onde eu posso capturar esses dados? (Correios? eh de graca?).

2 - Que API Java eu uso para fazer isso?

3 - Tem como eu fazer o download para a minha maquina desses enderecos? E depois ficar atualizando, mas trabalhando localmente?

vlw pessoal!

Os Correios vendem a base de dados de CEP deles.
Cuidado que tem uma versão que vem em um programa com senha.

vc vai ter que comprar a base de dados dos correios ( e isso não é barato ), para fazer as buscas use sql padrão, pq eles vende em .mdb

naum existe nenhum webService que faz isso?

é só uma curiosidade…

Veja bem

Existem Ceps de Logradouro e de Localidade, nem todos trazem cidade/rua… cuidem disso !

Você pode utilizar o site www.republicavirtual.com.br/cep/ para baixar gratuitamente uma base de dados atualizada com o cep e endereços ou utilizar o próprio site para obter as informações no seu programa.

Ola amigo.tenho um banco de dados que comprei dos correios de 2008 para um sistema.O banco de dados está no formato .fdb = firebird
Se estiver interessado em comprar, eu a vendo por um preço justo .Bem mais em conta que tive que pagar.E o melhor os dados estão abertos e voce pode alterar e inserir oque quizer.
andreihirata@hotmail.com

Para quem estiver encontrando esse post, existe o banco de CEP do www.qualocep.com. É atualizada, vale a pena.