FiiPractic 2015 - Adroid Pro - Day 3 - API Day

18
Android Pro API Day

Transcript of FiiPractic 2015 - Adroid Pro - Day 3 - API Day

Page 1: FiiPractic 2015 - Adroid Pro - Day 3 - API Day

Android ProAPI Day

Page 2: FiiPractic 2015 - Adroid Pro - Day 3 - API Day

– 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

Http?REST?

Page 4: FiiPractic 2015 - Adroid Pro - Day 3 - API Day

Request + Raspuns

[Header]+[Body] ——URL—> [Server]

[Header]+[Body] <————— [Server] ^JSON

Page 5: FiiPractic 2015 - Adroid Pro - Day 3 - API Day

Exemplu

http://rest-service.guides.spring.io/greeting

{ "content": "Hello, World!", "id": 3123}

Page 6: FiiPractic 2015 - Adroid Pro - Day 3 - API Day

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

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

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

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

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

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

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

Retrofit

@GET, @POST, @PUT, @DELETE, @HEAD@Query, @Path, @Body, @Header

@Headers

Page 14: FiiPractic 2015 - Adroid Pro - Day 3 - API Day

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

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

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

Work

Page 18: FiiPractic 2015 - Adroid Pro - Day 3 - API Day

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.