Академический Документы
Профессиональный Документы
Культура Документы
com Android
Alexandre Antunes
Bemobi & Portal Android
Intoduo
Headers;
Status code;
exemplo.com/recurso
exemplo.com/recurso/1
GET
Lista os recursos
Detalhe de um recurso
POST
Adiciona um recurso
PUT
Atualiza um recurso
DELETE
Remove um recurso
Spring
Spring
Maven
<dependencies>
<dependency>
<groupId> org.springframework.android </groupId>
<artifactId> spring-android-rest-template </artifactId>
<version> 1.0.1.RELEASE </version>
</dependency>
</dependencies>
Gradle
dependencies {
compile 'org.springframework.android:spring-android-rest-template:1.0.1.RELEASE'
}
Spring - Utilizao
Retorno do Servidor:
POJO:
"cpf": "111222333-00",
"endereco": "Rua das ruas, 9",
"id": "1",
"nome": "Alexandre Antunes"
}
Spring - Utilizao
Spring - Utilizao
// Dizer ao Spring que voc quer usar o Jackson para fazer o parse do JSON
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
// Executar o mmtodo HTTP GET, fazendo o parse do JSON para o Objeto Cliente
Cliente cliente = restTemplate.getForObject(url, Cliente.class);
Agora s nos basta usar esse objeto para popular nossa view, salvar
no banco ou qualquer outra coisa.
Volley
Volley - Utilizao
Volley - Utilizao
// Criar uma instncia do JsonObjectRequest, passando o mtodo HTTP, a url, um callback de sucesso
e um de erro.
JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.
Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// TODO Incluir cdigo de sucesso.
// Usar a lib de JSON padro ou o Gson para fazer o parse para o seu Objeto,
// no nosso caso o objeto o Cliente.
Cliente cliente = parse(response); // J veremos a implementao desse mtodo.
// Popular a View com o objeto Cliente.
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO Incluir cdigo para quando a requisio falhar.
// Mostrar uma Dialog informando ao usurio o erro.
}
});
Jackson:
No to simples de implementar;
Tem dezenas de funcionalidades;
Com o Spring pode ser bem simples.
Nativo JSONObject:
J vem no SDK do Android;
Simples de implementar, mas trabalhoso;
Google Gson:
Tambm pode usar com o Spring;
A mais simples. Em uma linha o seu objeto est pronto para usar;
Nativo JSONObject:
Retorno do Servidor:
{
try {
cliente.setId(jsonObject.getString("id"));
"cpf": "111222333-00",
"endereco": "Rua das ruas, 9",
cliente.setNome(jsonObject.getString("nome"));
"id": "1",
cliente.setCpf(jsonObject.getString("cpf"));
cliente.setEndereco(jsonObject.getString("endereco"));
} catch (JSONException e) {
e.printStackTrace();
}
return cliente;
}
Google Gson:
Retorno do Servidor:
{
"cpf": "111222333-00",
"endereco": "Rua das ruas, 9",
"id": "1",
"nome": "Alexandre Antunes"
}
Spring x Volley
Spring:
Volley
Comunicao eficiente
Comunicao eficiente
Comunicao eficiente
SSL (HTTPS);
if (entity != null) {
result[0] = String.valueOf(response.getStatusLine().getStatusCode());
InputStream instream = entity.getContent();
result[1] = toString(instream);
instream.close();
Log.i("get", "Result from post JsonPost : " + result[0] + " : " + result[1]);
}
} catch (Exception e) {
Log.e("NGVL", "Falha ao acessar Web service", e);
result[0] = "0";
result[1] = "Falha de rede!";
}
return result;
}
if (resposta[0].equals("200")) {
Gson gson = new Gson();
Cliente cliente = gson.fromJson(resposta[1], Cliente.class);
return cliente;
} else {
throw new Exception(resposta[1]);
}
}
Fontes
http://pt.wikipedia.org/wiki/Web_service#SOAP
http://pt.wikipedia.org/wiki/REST
http://en.wikipedia.org/wiki/Web_Application_Description_Language
http://spring.io/guides/gs/consuming-rest-android/
http://docs.spring.io/spring-android/docs/1.0.x/reference/html/rest-template.html
http://www.portalandroid.org/comunidade/viewforum.php?f=119
https://github.com/FasterXML/jackson
http://developer.android.com/reference/org/json/JSONObject.html
https://code.google.com/p/google-gson/
http://www.technotalkative.com/android-import-android-projects-from-git/
http://java.dzone.com/articles/android-%E2%80%93-volley-library
https://android.googlesource.com/platform/frameworks/volley
https://gist.github.com/ficusk/5474673
http://pt.wikipedia.org/wiki/JSON
http://pt.wikipedia.org/wiki/XML
Contato
Alexandre Antunes
antunes@portalandroid.org