retrofit 2 - o que devemos saber
TRANSCRIPT
![Page 1: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/1.jpg)
Retrofit 2
Bruno Vieira
O que devemos saber
![Page 2: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/2.jpg)
New Url Pattern
![Page 3: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/3.jpg)
New Url Pattern
public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}
public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}
![Page 4: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/4.jpg)
New Url Pattern
public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}
public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}
![Page 5: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/5.jpg)
New Url Pattern
public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}
public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}
![Page 6: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/6.jpg)
New Url Pattern
public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}
public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}
https://api.dribbble.com/shots?access_token=...
![Page 7: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/7.jpg)
New Url Pattern
public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}
public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1/") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}
![Page 8: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/8.jpg)
New Url Pattern
public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}
public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1/") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}
![Page 9: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/9.jpg)
New Url Pattern
public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}
public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1/") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}
![Page 10: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/10.jpg)
New Url Pattern
public interface WebServiceApi{@GET("shots")Call<List<ShotsVO>> getShotsList(@Query("access_token") String accessToken);}
public class WebServiceManagerImpl implements WebServiceManager { private void setupApi() { Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.dribbble.com/v1/") .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build(); webServiceApi = retrofit.create(WebServiceApi.class); }}
https://api.dribbble.com/v1/shots?access_token=...
![Page 11: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/11.jpg)
New Url Pattern
Dynamic URL
public interface WebServiceApi{
@GETCall<JokeVO> getAJoke(@Url String url);
}
![Page 12: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/12.jpg)
Bippples
https://github.com/OBrunoVieira/Bippples
Dribbble+
Chuck Norris Database
https://github.com/OBrunoVieira/Bippples
![Page 14: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/14.jpg)
OkHttp
![Page 15: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/15.jpg)
OkHttp
Retrofit 1.9 - Is optional
Retrofit 2.x - Is required
Importing a specific version:
compile ('com.squareup.retrofit2:retrofit:2.0.2') { exclude module: 'okhttp'}
compile 'com.squareup.okhttp3:okhttp:3.2.0'
![Page 16: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/16.jpg)
OkHttp
Interceptors public OkHttpClient clientInterceptor() { OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(this); ... return httpClient.build(); } public Response intercept(Chain chain) throws IOException { Request request = chain.request(); request = request.newBuilder()
.addHeader("Authorization", "123454324rtxccvbfdsfgvbcx!@#!@#!@#").build(); return chain.proceed(request); }
Retrofit retrofit = new Retrofit.Builder() .baseUrl(Environment.SERVER_URL) .client(clientInterceptor()) .build();
![Page 17: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/17.jpg)
OkHttp
Interceptors public OkHttpClient clientInterceptor() { OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(this); ... return httpClient.build(); } public Response intercept(Chain chain) throws IOException { Request request = chain.request(); request = request.newBuilder()
.addHeader("Authorization", "123454324rtxccvbfdsfgvbcx!@#!@#!@#").build(); return chain.proceed(request); }
Retrofit retrofit = new Retrofit.Builder() .baseUrl(Environment.SERVER_URL) .client(clientInterceptor()) .build();
![Page 18: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/18.jpg)
OkHttp.Interceptors
No Logging
![Page 19: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/19.jpg)
OkHttp.Interceptors
No Logging, but..
compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'
public OkHttpClient clientInterceptor() { HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(Environment.LOG_LEVEL);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(interceptor); ... return httpClient.build();}
![Page 20: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/20.jpg)
OkHttp.Interceptors
No Logging, but..
compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'
public OkHttpClient clientInterceptor() { HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(Environment.LOG_LEVEL);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(interceptor); ... return httpClient.build();}
![Page 21: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/21.jpg)
OkHttp.Interceptors
No Logging, but..
compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'
public OkHttpClient clientInterceptor() { HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); interceptor.setLevel(Environment.LOG_LEVEL);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); httpClient.addInterceptor(interceptor); ... return httpClient.build();}
![Page 22: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/22.jpg)
Converters
![Page 23: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/23.jpg)
Converters
No converter by default
compile "com.github.aurae.retrofit2:converter-logansquare:1.4.0"
Retrofit retrofit = new Retrofit.Builder() .baseUrl(Environment.SERVER_URL) .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build();
![Page 24: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/24.jpg)
Converters
No converter by default
compile "com.github.aurae.retrofit2:converter-logansquare:1.4.0"
Retrofit retrofit = new Retrofit.Builder() .baseUrl(Environment.SERVER_URL) .addConverterFactory(LoganSquareConverterFactory.create()) .client(webServiceInterceptor.clientInterceptor()) .build();
![Page 25: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/25.jpg)
Requests
![Page 26: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/26.jpg)
Requests
Synchronous and Asynchronous
Call<List<ShotsVO>> call = webServiceManager.getWebServiceApiInstance().getShotsList(accessToken);List<ShotsVO> shotsList = call.execute.body;
Call<List<ShotsVO>> call = webServiceManager.getWebServiceApiInstance().getShotsList(accessToken);call.enqueue(new Callback<List<ShotsVO>>(){
@Overridepublic void onResponse(Call<List<ShotsVO>> call, Response<List<ShotsVO>> response){
...}...
}
![Page 27: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/27.jpg)
Requests
Attention!
Call<List<ShotsVO>> call = webServiceManager.getWebServiceApiInstance().getShotsList(accessToken);call.enqueue(new Callback<List<ShotsVO>>(){
@Overridepublic void onResponse(Call<List<ShotsVO>> call, Response<List<ShotsVO>> response){
...}
@Overridepublic void onFailure(Call<List<ShotsVO>> call, Throwable throwable) {...}}
https://github.com/OBrunoVieira/Bippples
![Page 28: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/28.jpg)
Requests
Cancel
Call<List<ShotsVO>> call = webServiceManager.getWebServiceApiInstance().getShotsList(accessToken);
call.enqueue(new Callback<List<ShotsVO>>(){@Overridepublic void onResponse(Call<List<ShotsVO>> call, Response<List<ShotsVO>> response){
...}
@Overridepublic void onFailure(Call<List<ShotsVO>> call, Throwable throwable) {...}}
call.cancel();
![Page 29: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/29.jpg)
Requests
Cancel
Call<List<ShotsVO>> call = webServiceManager.getWebServiceApiInstance().getShotsList(accessToken);
call.enqueue(new Callback<List<ShotsVO>>(){@Overridepublic void onResponse(Call<List<ShotsVO>> call, Response<List<ShotsVO>> response){
...}
@Overridepublic void onFailure(Call<List<ShotsVO>> call, Throwable throwable) {...}}
call.cancel();
![Page 30: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/30.jpg)
=)
![Page 31: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/31.jpg)
Source
http://square.github.io/retrofit/
https://inthecheesefactory.com/blog/retrofit-2.0/en
http://www.iayon.com/consuming-rest-api-with-retrofit-2-0-in-android/
https://github.com/square/retrofit/blob/master/CHANGELOG.md
![Page 32: Retrofit 2 - O que devemos saber](https://reader035.vdocument.in/reader035/viewer/2022062311/58ed44361a28ab057d8b45ed/html5/thumbnails/32.jpg)
www.concretesolutions.com.brblog.concretesolutions.com.br
Rio de Janeiro – Rua São José, 90 – cj. 2121Centro – (21) 2240-2030
São Paulo - Rua Sansão Alves dos Santos, 433 4º andar - Brooklin - (11) 4119-0449