Enviar para Rest com UTF-8 não esta funcionando

1 resposta
javarest
clebiovieira

Pessoal, já estou quebrando a cabeça a 2 dias tentando enviar como UTF-8 informações para um servidor REST.

Hoje estou utilizando o Wildfly 9 que consequentemente tem a implementação do Rest Easy.

ResteasyClient client = new ResteasyClientBuilder().build();		
ResteasyWebTarget target = client.target(urlResource);
		
target.register(new BasicAuthentication(user, password));
	
target.request().post(Entity.entity(UMA_STRING_QUALQUER,"text/plain; charset=UTF-8"),String.class);

Estou criando em memória um ByteArrayOutputStream para pode justamente forçar um UTF-8

ByteArrayOutputStream streamFile      = new ByteArrayOutputStream();
		OutputStreamWriter    outputStreamUTF = new OutputStreamWriter(streamFile, "UTF-8");

		outputStreamUTF.append("valor_string qualquer");
		outputStreamUTF.append("\n");

                     outputStreamUTF.close();

                     streamFile.toString();   <-- Esse cara que vai para o método post do Rest.

A observação é que se eu pegar outputStreamUTF e passar new FileOutputStream pra ele,
ele vai criar um arquivo txt corretinho em UTF-8…

O problema parece estar no Rest creio eu…

Alguém tem uma idéia ?

1 Resposta

staroski

A documentação do ByteArrayOutputStream.toString() diz o seguinte:
Converts the buffer’s contents into a string decoding bytes using the platform’s default character set.

Tente utilizar

String texto = streamFile.toString("UTF-8");
target.request().post(Entity.entity(texto, "text/plain; charset=UTF-8"), String.class);
Criado 1 de dezembro de 2016
Ultima resposta 1 de dez. de 2016
Respostas 1
Participantes 2