Vraptor3 + Busca CEP!

11 respostas
Leandro-SP

Olá pessoal…
Qual a melhor forma de, usando o vraptor3, buscar um endereço a partir do CEP dentro de um formulario?
Utilizando o webservice dos Correios? A idéia é digitar o CEP e ja preencher os campos de endereço.
Tem diferença se a minha aplicação funcionar apenas numa intranet por exemplo ou caso for utilizar o webservice terei que ter a Internet no meu servdor?
Aguardo resposta.
Obrigado.
Att,
Leandro.

11 Respostas

Tenkara_Kiddo

Leandro-SP:
Olá pessoal…
Qual a melhor forma de, usando o vraptor3, buscar um endereço a partir do CEP dentro de um formulario?
Utilizando o webservice dos Correios? A idéia é digitar o CEP e ja preencher os campos de endereço.
Tem diferença se a minha aplicação funcionar apenas numa intranet por exemplo ou caso for utilizar o webservice terei que ter a Internet no meu servdor?
Aguardo resposta.
Obrigado.
Att,
Leandro.

tb gostaria de saber… = )

Lucas_Cavalcanti

você pode usar o webservice dos correios sim…

vc não precisa que a intranet inteira tenha acesso à internet, mas o servidor da sua aplicação precisa, se vc quiser fazer a consulta ao WS dos correios…

Leandro-SP

Lucas Cavalcanti:
você pode usar o webservice dos correios sim…

vc não precisa que a intranet inteira tenha acesso à internet, mas o servidor da sua aplicação precisa, se vc quiser fazer a consulta ao WS dos correios…

mas e quanto à segurança do servidor… pode ter algum impacto?

Lucas_Cavalcanti

o fato de acessar o WS dos correios não traz impactos à segurança…

mas se vc só colocar o servidor na internet, sim… vc precisa fazer a segurança do servidor, como sempre…

se o seu servidor é windows vc pode ter mais problemas, só colocar um servidor linux (debian ou ubuntu) e é bem fácil deixar ele seguro, e pro java tanto faz

Leandro-SP

Lucas Cavalcanti:
o fato de acessar o WS dos correios não traz impactos à segurança…

mas se vc só colocar o servidor na internet, sim… vc precisa fazer a segurança do servidor, como sempre…

se o seu servidor é windows vc pode ter mais problemas, só colocar um servidor linux (debian ou ubuntu) e é bem fácil deixar ele seguro, e pro java tanto faz

Legal Lucas… obrigado pela resposta.

Conhece o webservice da RepublicaVirtual?

http://migre.me/15wRq

Será que consigo fazer uma requisição neste webservice para retornar um json com o resultado, logicamente utilizando o vraptor3?

Lucas_Cavalcanti

Não conheço…

e vc consegue sim consumir o WS e retornar um JSON…

dependendo de como o WS foi feito é só fazer o mapeamento dos parametros e retorno dele para classes Java, e então gerar o json a partir dessas classes

Leandro-SP
Lucas Cavalcanti:
Não conheço...

e vc consegue sim consumir o WS e retornar um JSON...

dependendo de como o WS foi feito é só fazer o mapeamento dos parametros e retorno dele para classes Java, e então gerar o json a partir dessas classes

Consegui gerar o json.. agora só falta fazer o javascript no jsp para popular os inputs com os valores do json... mas isso ficara para amanha pois to com sono..

Foi facil... utilizei a classe ja pronta que tem no site da RepublicaVirtual dentro do arquivo cep_java_Tomaz_Lavieri.zip..

@Get 
	@Path("/produto/buscacep.json")
	@LoggedIn
	@Roles(roles = {"Administrador", "Visitante"})
	public void buscaCepJson(String cep) {
		
		WebServiceCep webServiceCep = WebServiceCep.searchCep("01311-100");
		//A ferramenta de busca ignora qualquer caracter que não seja número.
		
		//caso a busca ocorra bem, imprime os resultados.
		if (webServiceCep.wasSuccessful()) {
			System.out.println("Cep: "+webServiceCep.getCep());
			System.out.println("Logradouro: "+webServiceCep.getLogradouroFull());
			System.out.println("Bairro: "+webServiceCep.getBairro());
			System.out.println("Cidade: "+webServiceCep.getCidade()+"/"+ webServiceCep.getUf());
			
		//caso haja problemas imprime as exceções.
		} else {
			System.out.println("Erro número: " + webServiceCep.getResulCode());
			System.out.println("Descrição do erro: " + webServiceCep.getResultText());
		}
		
		result.use(json()).from(webServiceCep).serialize();
	}
}

Acessando direto a url /produto/buscacep.json volta o json:

{"webServiceCep": {
  "resulCode": 1,
  "resultText": "sucesso - cep completo",
  "cep": "01311100",
  "bairro": "Bela Vista",
  "cidade": "São Paulo",
  "logradouro": "Paulista",
  "logradouroType": "Avenida",
  "uf": "SP"
}}

AH só uma duvida.. quanto ao São Paulo vier com o caractere estranho.. será o encoding da aplicação? tem como setar isso na solicitação do json?

Lucas_Cavalcanti

se vc setar o encoding do response para UTF-8, isso vai funcionar…

o jeito mais fácil é colocar isso no web.xml:

<context-param>
        	<param-name>br.com.caelum.vraptor.packages</param-name>
	        <param-value>UTF-8</param-value>
    </context-param>
Leandro-SP

Acho que não funcionou não… já tinha no web.xml:

<context-param> <param-name>br.com.caelum.vraptor.encoding</param-name> <param-value>UTF-8</param-value> </context-param>

Lucas, tem outra ideia do que posso fazer?

Lucas_Cavalcanti

então, provavelmente o editor que vc usou pra abrir o json não levou em consideração o encoding…

tenta fazer uma request boba pra essa url usando o jQuery:

$.getJSON('/<contexto>/produto/buscacep.json', function(json) {
   alert(json.webServiceCep.cidade);
});

e ve o que aparece no alert

Leandro-SP

Lucas Cavalcanti:
então, provavelmente o editor que vc usou pra abrir o json não levou em consideração o encoding…

tenta fazer uma request boba pra essa url usando o jQuery:

$.getJSON('/<contexto>/produto/buscacep.json', function(json) {
   alert(json.webServiceCep.cidade);
});

e ve o que aparece no alert

Ae Lucas Cavalcanti,
Funcionou… era o editor mesmo… o tal wordpad me enganou! :lol:
O alert apareceu com o “São Paulo” certinho.
Amanha vou montar o formulario com os input’s e tentar atualizar o value deles via javascript com a resposta do json… com certeza terei mais duvidas.
Obrigado.
Att,
Leandro.

Criado 17 de agosto de 2010
Ultima resposta 17 de ago. de 2010
Respostas 11
Participantes 3