[Restfuile] Resposta da requisição com caracteres quebrados

Pensei em postar essa questão nas issues do Restfulie mas como nem sei se o projeto ainda está “ativo”, hehe, e como o pessoal da Caelum e outros usuários dessa lib frequentam o Guj vai aqui mesmo.

Amigos, estou usando o Restfulie para consultar um serviço que retorna um json, e uma das propriedades tem o valor “São Paulo”. Acontece que a resposta retornada pelo Restfulie está quebrando os caracteres da acentuação. Debugando um pouco percebi algumas coisas,

. o http response retornado tem o cabeçalho “Content-Type” como “application/json”, sem informação do charset (como por ex “application/json; charset=UTF-8”),
. o Apache Http Client, usado internamente pelo Restfulie, tenta decodar a resposta usando o charset informado no header “Content-Type” da resposta, como nesse exemplo que dei; como esse charset não está vindo na resposta por padrão é usado ISO-8859-1, o que está quebrando o acento da palavra “São Paulo”

No desespero, hehe, eu peguei o código do Restfulie no Github e “corrigi”, minha implementação foi a seguinte,

. usar o charset definido no header “Accept-Charset” da requisição original, se houver, OU
. usar o charset que consta no “Content-Type” da requisição original, se houver,
. se não houver segue a implementação padrão do Apache Http Client (ler o content-type do response, ou usar ISO-8859-1)
. aí mandei na minha requisição esses cabeçalhos passando UTF-8 e resolveu

Isso seria um “bug”, um potencial ponto de correção no Restfulie, ou outros usuários já passaram por isso?

Obrigado!

[quote=alias]Pensei em postar essa questão nas issues do Restfulie mas como nem sei se o projeto ainda está “ativo”, hehe, e como o pessoal da Caelum e outros usuários dessa lib frequentam o Guj vai aqui mesmo.

Amigos, estou usando o Restfulie para consultar um serviço que retorna um json, e uma das propriedades tem o valor “São Paulo”. Acontece que a resposta retornada pelo Restfulie está quebrando os caracteres da acentuação. Debugando um pouco percebi algumas coisas,

. o http response retornado tem o cabeçalho “Content-Type” como “application/json”, sem informação do charset (como por ex “application/json; charset=UTF-8”),
. o Apache Http Client, usado internamente pelo Restfulie, tenta decodar a resposta usando o charset informado no header “Content-Type” da resposta, como nesse exemplo que dei; como esse charset não está vindo na resposta por padrão é usado ISO-8859-1, o que está quebrando o acento da palavra “São Paulo”

No desespero, hehe, eu peguei o código do Restfulie no Github e “corrigi”, minha implementação foi a seguinte,

. usar o charset definido no header “Accept-Charset” da requisição original, se houver, OU
. usar o charset que consta no “Content-Type” da requisição original, se houver,
. se não houver segue a implementação padrão do Apache Http Client (ler o content-type do response, ou usar ISO-8859-1)
. aí mandei na minha requisição esses cabeçalhos passando UTF-8 e resolveu

Isso seria um “bug”, um potencial ponto de correção no Restfulie, ou outros usuários já passaram por isso?

Obrigado!

[/quote]

Eu ja sofri com esse mesmo problema e muitos outros que acabei tendo que contornar de outro modo e assim como você acabei baixando o projeto e consertando o que precisava . Até cheguei a enviar um pull request faz muito tempo com todas correções . https://github.com/caelum/restfulie-java/pull/48 faz uns 2 meses mas nunca foi visto e nem aplicado pelo visto . Pessoal deveria dar um pouco mais atenção a esse projeto ainda mais por não estar tão estável e funcional quanto pensam . Assim na boa até desanima tentar contribuir . Abraços

Putz amigo, chato isso hein. Sem a evolução da biblioteca nem mesmo pra correção de problemas fica difícil…