quarta-feira, 16 de janeiro de 2008

Programa Para Rastrear Encomendas dos Correios


Programa Para Rastrear Encomendas dos Correios


Nas duas ultimas semanas fiz algumas compras de livros de alguns sebos de outros estados. Os livros claro foram enviados pelos correios e os vendedores me passavam os códigos de rastreamento, alguns já passavam um link já formado para a página dos correios.

Estes links já facilitavam minha vida, mas pensei que poderia fazer algo melhor. Como já tinha feitos testes de requisição de paginas trazendo o código html e também já tinha brincado com Regex (
Expressões Regulares), pensei em como fazer um programa bem simples que guardasse uma coleção de Códigos e fizesse uma requisição na pagina dos correios para trazer os dados.

Descobri que Swing aceita código html em alguns componentes (Labels, Buttons, etc) desde que o texto venha entre as tags e aproveitei isso para fazer o que eu queria com menos esforço :D, eu trago da pagina dos correios a mesma tabela que ele monta e coloco ela em um JLabel.

No Campo de entrada depois de pensar em como tratar códigos fora do formato acabei usando Regex para validar e decidi que a pessoa poderia colocar mais de um código por vez:

private static final Pattern patternCodigo = Pattern.compile("\\w{2}\\d{9}\\w{2}");

O tratamento ainda não está o ideal, ele somente procura no texto uma string que tenha 2 letras, 9 números e mais duas letras. As duas primeiras letras se referem ao tipo da postagem e as duas ultimas ao país. Não fiz tratamento se o código é valido nem se o país também, alias no momento o programa somente checa códigos na pesquisa nacional.

Link para programa em forma de exe: 
Rastreador 0.1.2
Link para o programa:
Rastreador 0.1.2
Link para o código fonte: Source Rastreador 0.1.2


Criticas e sugestões são bem vindas.

[]'s

Rodrigo Menezes

Edit: Fiz um update, para ele pegar a mensagem dos correios para um código que não exista.


Edit 2: Adicionei um campo de observação. Então o usuário pode adicionar uma observação para cada código de rastreamento.

Observação: O arquivo que o programa salva as informações, não é compatível com esta versão, então descompacte o programa em outra pasta.

Edit3: Adicionando novos links

23 comentários:

Bruno Antonio disse...

Isso ae garoto ficou legal como tu fez a comunicação com a net para enviar a requisicao?

Rodrigo disse...

Opa eu fiz baseado num código que catei na net.

Segue o metodo:

private final String urlBase = "http://websro.correios.com.br/sro_bin/txect" +
"01$.QueryList?P_LINGUA=001&P_TIPO=001&P_COD_UNI=";


private String getHtml() throws CodigoException {
StringBuffer newData = new StringBuffer(10000);
try {
newData.append("");

URL url = new URL(urlBase + codigo);
HttpURLConnection connection =
(HttpURLConnection) url.openConnection();

connection.setRequestProperty("Request-Method", "GET");
connection.setDoInput(true);
connection.setDoOutput(false);

connection.connect();

// abre a conexão pra input
BufferedReader br =
new BufferedReader(new InputStreamReader(connection.getInputStream()));

// le ate o final
newData = new StringBuffer(10000);
String s = "";
while (null != ((s = br.readLine()))) {
newData.append(s).append('\n');
}
br.close();
String result = connection.getResponseCode() + "/" + connection.getResponseMessage();
if (!result.equals("200/OK")) {
throw new CodigoException("Erro ao tentar obter dados " +
"do correio: " + result);
}

} catch (UnknownHostException uHostE) {
throw new CodigoException("Erro ao conectar a pagina dos correios.");
} catch (IOException ioEx) {
throw new CodigoException("Erro: " + ioEx.getMessage());
}

return newData.toString();
}

Unknown disse...

Esse programa tb serve para rastrear carregamentos Whisky ou cerveja? :)

Rodrigo disse...

Se o carregamento for enviado pelos correios, serve sim ;)

Raphael R Barbosa disse...

Oi, não consegui rodar...

Diz que "Could not find the main class. Program will exit"

Hakas disse...

Quando sai uma versão pra visualizar encomendas internacionais =D?

Hakas disse...

N verdade acabei de testar, e ele tb analisa codigos de rastreamento internacional =].

UnderOground disse...

Sei que você já fez isso a muito tempo, mas só fui achar sem querer na net hoje, usei e é muito bom, funciona direitnho.

Fico no aguardo de sua resposta quanto ao código fonte, pois tenho interesse em ver como você fez, também sou programador Java.

Um abraço,

Bruno Alcântara

Rogério da Carla disse...

muito bem rapaz, parabéns!
rápido, simples, objetivo e funcional.
entre abrir o programa e realizar a consulta apenas 15segundos.
as vezes só para abrir o navegador e achar o campo de pesquisa do correio leva mais de um minuto!
será que roda em celular?
abraço!

Rodrigo disse...

Opa

Rogério!

Valeu cara!

Ele não roda em celular, mas é uma boa idéia para quando eu me formar e tiver com mais tempo, tentar adaptar ele para rodar em celular.

[]'s

Antonio Medeiros disse...

muito pratico,vou tentar alterar o codigo e acrescentar outros rastreios, para encomendas vindas de 6 empresas de fora DHL, HONGKONG, UPS, FEDEX e outras...pois toda hora preciso ficar entrando no site do correios

msn antoniomam@hot

Unknown disse...

Seu Jabá no Meiobit funcionou. =P

Muito boa a idéia de fazer funcionar em celular mesmo. Adapta pro android.
Ou faz um site simples que de para se acessado pelo celular. =)

Unknown disse...

Saudações
Achei muito interessante seu aplicativo, contudo estou procurando um algorítmo em delphi para validar o dígito verificador.
Estou montando um sistema para gerenciar cartas enviadas, como são muitas cartas registradas (pelo sistema de rastreamento) preciso checar se o usuário não acabou inserindo dígito verificador inválido ou trocando algum número.
Agradecido.
hiprogramer@gmail.com

MAREMOTO disse...

Você esta de parabéns, criou algo que pode ajudar a pessoas, pensou não em você mas nos outros, ótima idéia, pessoas assim merecem ser vitoriosas, o nosso papel e ajudar sempre que puder, gostei da iniciativa, vamos ajudar o nosso amigo nesse source.

Rodrigo disse...

Opa Maremoto!

Obrigado pelo apoio!

moxtempus disse...

Para quem não conseguiu pegar no geocities, segue um link para download do programa: http://www.easy-share.com/1908462064/Rastreador0.1.1.zip

AKos disse...

Olá, esse programa é muito util para mim, porém não estou conseguindo baixar anova versão, pois a colocaçao de comentários é ainda mais perfeito ! Se possivel corrigir o link, ou mandar para email kosarthur@yahoo.com.br

Grato.

Fabio Aurelio disse...

Ironman,
Muito bom seu codigo e a logica q usou..! mandou bem cara..!
Vc nao pode disponibilizar o fonte para fazer umas adaptaçoes?(os creditos serao mantidos com certeza)
abraços
fcuritiba@gmail.com

Fabio Aurelio disse...

Grande rodrigo...

Valeu mesmo pelo source xD

abraçao cara..td de bom ai !

Michel Terres disse...

bah, testei o programa aqui e a ideia é muito boa, é bem rapido até, uma sugestão que eu do seria de possibilitar que ele fique em execução no "tray" e fizece checagens a todo instante e notificace de mudanças, pra quem encomenda muitas coisas o tempo todo isso seria muito util

Anônimo disse...

adorei! que programa maravilhoso! muito obrigada por compartilhar esta joia!

Ulisses Hen disse...

Cara muito obrigado pela sua iniciativa, vai me ajudar em um projeto, vlw.

Mario disse...

Rodrigo, parece que esse link não existe mais (http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&P_TIPO=001&P_COD_UNI="").
Você já atualizou para o link novo?
Obrigado.