Dando continuidade à série de desenvolvimento de aplicações REST com Spring, neste post eu darei um exemplo de como consumir JSON nas suas aplicaçoes Android com a utilização do Spring.
Quem não leu o post anterior, eu sugiro que o faça em, pois ele contempla alguns aspectos de configuração do ANDROID que não serão replicados neste post.
As implementações demonstradas a seguir exibem o consumo de um serviço REST simples criado por mim que fornece uma lista de contatos.
Neste exemplo, básicamente as únicas alterações que realizaremos em comparação com o post anterior, serão a utilização de um novo MessageConverter e algumas anotações nos nossos POJOs.
Para este exemplo, precisaremos das seguintes dependências descritas em nosso pom.xml:
[cc lang=”xml” width=”100%”]
[/cc]
O método que realiza a a chamada ao serviço deve ter o seguinte formato:
[cc lang=”java” width=”100%”]
public void recuperarContatos(final View v) {
RestTemplate restTemplate = new RestTemplate();
List
messageConverters.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
Contatos contatos = restTemplate.getForObject(“http://192.168.16.148:8080/rest/contatos”, Contatos.class);
// Tratamento com os contatos recebidos.
}
[/cc]
Inicialmente, assim como no exemplo anterior, definimos o nosso RestTemplate, adicionamos uma request factory (para que o template saiba realizar nosso request ao serviço) e um message converter que serialize o JSON recebido e o salvaremos em um POJO descrito por nós. Este POJO, que será descrito a seguir, deve possuir os campos com nomes exatamente iguais aos retornados pelo serviço, para que saiba fazer a serialização.
Para a leitura do JSON recebido, definimos os seguintes POJOs:
[cc lang=”java” width=”100%”]
@JsonIgnoreProperties(ignoreUnknown = true)
public class Contatos {
private Collection
// Getters, Setters e Construtores…
}
[/cc]
[cc lang=”java” width=”100%”]
@JsonIgnoreProperties(ignoreUnknown = true)
public class Contato {
private String nome;
private String celular;
private String email;
private String twitter;
private String facebook;
// Getters, Setters e Construtores…
}
[/cc]
Como pode-se notar, definimos o POJO que contém as propriedades e um outro que possui uma lista deste objeto. Desta forma, o Jackson JSON Processor consegue serializar o JSON recebido tranquilamente. A única medida de precaução que devemos tomar para evitar problemas com a nossa aplicação, é adicionar a anotação @JsonIgnoreProperties(ignoreUnknown = true) em nossas classes, para que uma possível falta de propriedades em nossas classes em comparação com o JSON recebido não resulte em um “crash” na aplicação.
Este foi mais um post da série Android, espero que tenham gostado. Quaisquer dúvidas, sugestões e/ou reclamações, comentem!
_________________________________________
Lucas Oliveira – Analista Programador na redspark.
Bacharel em Sistemas de Informação pela Universidade de São Paulo.
@OliveiraLima_