quinta-feira, 3 de maio de 2012

Client Restfull Jersey

Salve galera!

Gostaria de compartilhar a solução de um erro que tive a poucos dias, e que me fez perder algumas horas...

Quando eu tentava converter uma lista no formato JSON em objeto, usando a api Jersey, era apresentado um erro. O formato da mensagem JSON que retornava era:


[{"id":2,"descricao":"RESTAURANTE"},{"id":3,"descricao":"MERCEARIA"}]


O erro era:

[com.sun.istack.SAXParseException2;
 lineNumber: 0; columnNumber: 0; unexpected element (uri:"", 
local:"id"). Expected elements are <{}categoria>]


Ou também:

XMLStreamException: JSON expression can not be empty



A configuração do cliente era:

ClientConfig config = new DefaultClientConfig();
client = Client.create(config);
client.addFilter(new LoggingFilter());
webResource = client.resource(BASE_URI).path(resourceName);


E forma de busca do servidor era:

WebResource resource = webResource;
ClientResponse response = resource.path(java.text.MessageFormat.format("{0}/{1}", new Object[]{max, first})).getRequestBuilder().accept(MediaType.APPLICATION_JSON_TYPE).get(ClientResponse.class);
GenericType> genericType = new GenericType>(){};
List categorias = response.getEntity(genericType);





Então, após algum tempo de pesquisa, descobri que faltava uma linha de código na configuração do cliente:

config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,Boolean.TRUE);


E pronto, após adicionar essa configuração, tudo funcionou perfeitamente. Espero que ajude!

Até a próxima!




Nenhum comentário:

Postar um comentário