Comunicação entre JSF e Servlet via HTTPURLConnection - Problema com acentuação (Encoding Hell)

1 resposta
alias

Olá amigos do fórum,

Venho a voces novamente para que, se possivel, me ajudem com esse problema.

Estou trabalhando em um projeto com JSF onde haverá integração com o PagSeguro do UOL. O UOL pede pra, quando for enviado um POST para a url deles passando os dados da venda, sejam enviados com o encoding ISO-8859-1.

O que fiz por enquanto foi na minha página xhtml criar uma chamada a um metodo do bean que faz o seguinte:

pagSeguro = new PagSeguroTO();
		pagSeguro.setUrlEnvio("http://localhost:8888/servidorpagseguro/venda/VendaPagSeguro");
		pagSeguro.setEmailCobranca("[email removido]");
		
		this.anuncio = arg;
		
		try{
			URL urlSend = new URL(pagSeguro.getUrlEnvio());
			
			HttpURLConnection connection = (HttpURLConnection) urlSend.openConnection();

			String parameters = getSendParameters();
			
			connection.setDoOutput(true);
			connection.setDoInput(true);
			connection.setUseCaches(false);
			connection.setRequestProperty("content-type", "application/x-www-form-urlencoded; charset=iso-8859-1");
			connection.setRequestProperty("request-method","POST");

			connection.connect();
			
			OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), "iso-8859-1");
			writer.write(parameters);
			writer.flush();
			writer.close();

            connection.getInputStream();

		} catch (MalformedURLException e) {
			System.err.println(e);
			
		} catch (IOException e) {
			System.err.println(e);
		}

Nesse POST para o PagSeguro devem ser enviados via parametros os dados da venda, e os dados do cliente. Estou gerando os parametros da seguinte forma:

URLEncoder.encode("cliente_nome", ISO_8859_1), URLEncoder.encode(p.getNome(), ISO_8859_1)

Há outros parametros tambem que vou concatenando em uma String, e retorno ela ao metodo mais acima que faz a requisicao via HTTPURLConnection. Isso por enquanto está ok. Mas como nao há um ambiente de testes no UOL, estou tentando ( :lol: ) criar uma aplicação com o GWT para testar o envio dos parametros e outros requisitos do PagSeguro. E aí está o meu problema…

Nesse segundo projeto tem um servlet que recebe as chamadas (é a URL que estou me conectando), e quando leio o valor dos parametros, as palavras que tem acento estao vindo zoadas…tentei fazer um URLDecoder.decode passando ISO-8859-1 tambem, mas nao resolveu. Não sei se o problema é o encoding do app server embarcado no GWT, ou se há algum problema no envio dos meus dados…

O que estou fazendo está correto, esse URLEncoder.encode?Posso ter certeza que meus parametros estao indo com o encoding correto?E como recupero a palavra corretamente no outro lado?

Obrigado amigos!

1 Resposta

rodpuc

Sei que o post é antigo mas estou com problema na hora de receber o POST do pagseguro informando a mudança de status da compra.
Eu recebo o GET do pagseguro (que redireciona pra uma página de “compra concluída” dentro do meu site) mas o POST simplesmente não chega, colocando em debug ele nem passa pelo doPost() da minha servlet.

Há pouquíssimo material na internet para ajudar com isso (a maioria dos desenv. usa php para essa integração) então se o dono do post ou mais alguém souber me ajudar com isso vou ficar muito grato!

Criado 29 de março de 2010
Ultima resposta 17 de jan. de 2011
Respostas 1
Participantes 2