API dos Correios

9 respostas
_

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.

9 Respostas

M

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???

M

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 ?

A

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.

A

O que fiz, em C:

/***********************************/
/*   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;
}

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.

L

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

D

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.

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;
	}
}
H

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

Criado 12 de novembro de 2011
Ultima resposta 14 de out. de 2013
Respostas 9
Participantes 7