![Page 1: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/1.jpg)
Android ProAPI Day
![Page 2: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/2.jpg)
– Test Android
“Aplicatia ta foloseste un API (lastfm), sa spunem ca in format JSON. Cum procedezi sa
consumi aceste date?”
![Page 3: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/3.jpg)
Http?REST?
![Page 4: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/4.jpg)
Request + Raspuns
[Header]+[Body] ——URL—> [Server]
[Header]+[Body] <————— [Server] ^JSON
![Page 5: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/5.jpg)
Exemplu
http://rest-service.guides.spring.io/greeting
{ "content": "Hello, World!", "id": 3123}
![Page 6: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/6.jpg)
JSON?
JSONObject jObj = new JSONObject(data);Greeting greeting = new Greeting();greeting.content = jObj.getString(“content");greeting.id = jObj.getLong("id");
![Page 7: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/7.jpg)
Http?
HttpClient httpclient = new DefaultHttpClient();HttpResponse response = httpclient.execute(new HttpGet(URL));
ByteArrayOutputStream out = new ByteArrayOutputStream();response.getEntity().writeTo(out);responseString = out.toString();out.close();
![Page 8: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/8.jpg)
Gson
class Greeting{ String content; long id;}
Gson gson = new Gson();Greeting greeting = gson.fromJson(response, Greeting.class);
![Page 9: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/9.jpg)
Jackson
class Greeting{ String content; long id;}
ObjectMapper mapper = new ObjectMapper();Greeting greeting = mapper.readValue(responseString, Greeting.class);
![Page 10: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/10.jpg)
Retrofit
interface GreetService { @GET("/greeting") Greeting getGreeting(); @GET("/altceva") Altceva getAltceva();}
RestAdapter restAdapter = new RestAdapter.Builder() .setServer("http://rest-service.guides.spring.io") .build();
GreetService greetService = restAdapter.create(GreetService.class);
![Page 11: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/11.jpg)
Retrofit
parametri
http://rest-service.guides.spring.io/greeting?name=Bob
public interface GreetService { @GET("/greeting") Greeting getGreeting(@Query(“name") String name);}
![Page 12: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/12.jpg)
Retrofit
Async
public interface GreetService { @GET("/greeting") void getGreeting(@Query("name") name, Callback<Greeting> callback);}
![Page 13: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/13.jpg)
Retrofit
@GET, @POST, @PUT, @DELETE, @HEAD@Query, @Path, @Body, @Header
@Headers
…
![Page 14: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/14.jpg)
Spring Android
RestTemplate restTemplate = new RestTemplate();restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());Greeting greeting = restTemplate.getForObject(url, Greeting.class);
![Page 15: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/15.jpg)
Feign
interface GreetService { @GET("/greeting") Greeting getGreeting();}
GS gs = Feign.builder() .decoder(new GsonDecoder()) .target(GreetService.class, “https://…");
gs.getGreeting();
![Page 16: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/16.jpg)
Volley, Retrofit, Ion (koush) si alte librarii similare trateaza mai mult partea de networking decat cea de REST si discutam la cursul 4 despre toate.
![Page 17: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/17.jpg)
Work
![Page 18: FiiPractic 2015 - Adroid Pro - Day 3 - API Day](https://reader031.vdocumente.com/reader031/viewer/2022020307/55a8d3631a28abc3778b45e0/html5/thumbnails/18.jpg)
Level 1: - Incarcati greeting de pe: http://rest-service.guides.spring.io/greeting
Level 2: - Faceti un consumator pentru GitHub, Flickr sau LastFM. - Implementati autentificarea pentru serviciul ales (Nu ma refer la un
ecran de login, hardcodati credentialele)
Level badass: - Consumati un serviciu pe format XML - Folositi adnotari Jackson ca sa aveti un denumiri diferite in POJO
fata de JSON - Extra bonus la tabla, referitor la cast automat.