API dos Correios

Olá.

Alguém sabe como posso utilizar os serviços do correio?

Existe alguma API em Java para isto???

Se alguém souber me passa o link.

não entendi que

Eu queria disponibilizar no meu sistema um campo (JtextField) aonde o usuário informasse o número de rastreamento do pacote.

E com esse número eu fizesse uma consulta e retornasse o status do objeto para um campo Jlabel.

Queria saber se existe alguma API em Java que faz essa consulta???

Se eu não me engano os correio disponibilizam um webservice, vc vai ter que fazer uma pagina que consuma o serviço.

Alguém possui algum tutorial ou explicação de como funcionam os webservice?

Como fazer para trabalhar com eles em Java ?

Uma vez eu comecei a fazer um projeto parecido, mas acabei desistindo. Basicamente, você deve querer algo como:

http://websro.correios.com.br/sro_bin/txect01$.startup?P_LINGUA=001&P_TIPO=001

Bem, quando eu estava procurando à respeito, eu não achei uma API para isso. Consequentemente, fui mais radical, e pensei em preencher o campo, na página acima, e depois executar o action do botão para, ao retornar os resultados, eu baixar todo código fonte da página e filtrar, pegando apenas as informações que eu desejo. É uma forma de se faze-lo. Já lhe adianto que, se for fazer dessa forma, você terá bastante trabalho.

O que fiz, em C:

[code]/***********************************/
/* Desenvolvido por André Rosa /
/
*********************************/
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>

int main(int argc,char *argv[]){
CURL * curl;
CURLcode res;

struct curl_httppost *formpost = NULL;
struct curl_httppost *lastptr = NULL;
struct curl_slist *headerlist = NULL;
static const char buf[] = "Expect:";

curl_global_init(CURL_GLOBAL_ALL);

curl_formadd(	&formpost,
						&lastptr,
						CURLFORM_COPYNAME, "P_COD_UNI",
						CURLFORM_COPYCONTENTS, "SS123456789BR",
						CURLFORM_END);
						
	curl = curl_easy_init();
	headerlist = curl_slist_append(headerlist, buf);
	if(curl){
		curl_easy_setopt(curl, CURLOPT_URL, 
		"http://websro.correios.com.br/sro_bin/txect01$.startup?P_LINGUA=001&P_TIPO=001");

		if((argc == 2) && (!strcmp(argv[1], "noexpectheader")))
			curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
		curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
		res = curl_easy_perform(curl);
		
		/* free */
		curl_easy_cleanup(curl);
		curl_formfree(formpost);
		curl_slist_free_all (headerlist);
		

	}
	return 0;

}[/code]

Ainda faltam algumas adaptações. No caso, há alguns erros simples, como, por exemplo, eu estar dando um POST, sendo que o servidor espera um GET. E é por isso que ele não consegue ver as variáveis P_LINGUA e P_TIPO=001. Altere o método para GET e provavelmente, será possível receber a página. Outro detalhe é que a URL é outra: txect01$.QueryList
Veja o parâmetro no action, do formulário.

Com isso você já tem 80% do projeto pronto. Só, por favor, não tive meus créditos.

Se você precisa de uma api de correios… Entra em contato com a empresa MakerPlanet!
Ela tem essa api que vc procura para uso em Maker Softwell…
Mas se vc ligar e tentar fazer um acordo, eles podem dar um jeito de liberar a api em java para você!

Link com as APIs da empresa!

http://makerplanet.com/?view=outsourcing&lang=BR

Olá, faz tanto tempo que você postou aqui, nem sei se quer mais essa “api”, mas eu montei uma para quem entrar aqui como eu entrei a uma semana atras procurando por ela.

[code]import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.SocketTimeoutException;

import org.jsoup.HttpStatusException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class buscaCEP {

public String getEndereco(String CEP) throws IOException {

	//***************************************************
	try{
		
	Document doc = Jsoup.connect("http://www.qualocep.com/busca-cep/"+CEP)
			  .timeout(120000)
			  .get();
	Elements urlPesquisa = doc.select("span[itemprop=streetAddress]");
	for (Element urlEndereco : urlPesquisa) {
			return urlEndereco.text();
	}

	} catch (SocketTimeoutException e) {
		
	} catch (HttpStatusException w) {
		
	}
	return CEP;
}

public String getBairro(String CEP) throws IOException {

	//***************************************************
	try{
		
	Document doc = Jsoup.connect("http://www.qualocep.com/busca-cep/"+CEP)
			  .timeout(120000)
			  .get();
	Elements urlPesquisa = doc.select("td:gt(1)");
	for (Element urlBairro : urlPesquisa) {
			return urlBairro.text();
	}

	} catch (SocketTimeoutException e) {
		
	} catch (HttpStatusException w) {
		
	}
	return CEP;
}

public String getCidade(String CEP) throws IOException {

	//***************************************************
	try{
		
	Document doc = Jsoup.connect("http://www.qualocep.com/busca-cep/"+CEP)
			  .timeout(120000)
			  .get();
	Elements urlPesquisa = doc.select("span[itemprop=addressLocality]");
	for (Element urlCidade : urlPesquisa) {
			return urlCidade.text();
	}

	} catch (SocketTimeoutException e) {
		
	} catch (HttpStatusException w) {
		
	}
	return CEP;
}

public String getUF(String CEP) throws IOException {

	//***************************************************
	try{
		
	Document doc = Jsoup.connect("http://www.qualocep.com/busca-cep/"+CEP)
			  .timeout(120000)
			  .get();
	Elements urlPesquisa = doc.select("span[itemprop=addressRegion]");
	for (Element urlUF : urlPesquisa) {
			return urlUF.text();
	}

	} catch (SocketTimeoutException e) {
		
	} catch (HttpStatusException w) {
		
	}
	return CEP;
}

}
[/code]

Essa é facil…

http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&P_TIPO=001&P_COD_UNI=

depois do “=” acrescente o cód do rastreamento, exemplo:

http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&P_TIPO=001&P_COD_UNI=DG123456789BR

o correio tb tem consulta via webservice, mas para isso vc precisa ter um contrato…

Abraços