Correção
Estou com um problema de acentuação ao consumir WebService no Windows
Server.
Tenho apache-tomcat-7.0.63 instalado no windows server 2008, e como SGB,
o PostGres 9.4 e com o Java 8.
O erro acontece quando executo fora do NetBeans. Ou seja, se executo
fora em qualquer ambiente ele grava os caracteres errados, mas se
executo dentro do NetBeans(Depurando ou apenas Executando) ele grava os
caracteres normais.
código do web service
@POST
@Path("cliente/sincronizar")
@Consumes("application/json;charset=utf-8")
public Response createClienteInJSON(String param) {
Gson gson = new Gson();
ContaCTR contaCTR = new ContaCTR();
ParamCliente paramCliente = gson.fromJson(param, ParamCliente.class);
Conta conta = contaCTR.carregar(paramCliente.getToken());
if (!paramCliente.getClientes().isEmpty() && conta != null) {
try {
WsAuxiliar.sincronizarCliente(paramCliente.getClientes(), conta);
ClienteCTR clienteCTR = new ClienteCTR();
List<Cliente> clientes = clienteCTR.listar(conta.getContaid(), "codigointerno");
WsAuxiliar.sincronizarEmail(paramCliente.getEmails(), conta, clientes);
WsAuxiliar.sincronizarEndereco(paramCliente.getEnderecos(), conta, clientes);
WsAuxiliar.sincronizarTelefone(paramCliente.getTelefones(), conta, clientes);
} catch (Exception e) {
throw new RuntimeException("Falha ao sincronizar Cliente. Erro: " + e.getMessage());
}
}
return Response.status(201).build();
}
código cliente consumindo web service
public Retorno sendPostClientes(String token) throws Exception {
try {
ParamCliente paramCliente = new ParamCliente();
paramCliente.carregar();
paramCliente.setToken(token );
Gson gson = new Gson();
String input = gson.toJson(paramCliente);
URL url = new URL(Configuracao.carregar().getWebserv() + "cliente/sincronizar");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();
if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
conn.disconnect();
} catch (Exception e) {
return Retorno.criarRetorno(Boolean.TRUE, "Erro ao sincronizar clientes!\n" + e.getMessage());
}
return Retorno.criarRetorno(Boolean.FALSE, "Clientes Sincronizado com sucesso!");
}
Desde já um muito obrigado pela ajuda.