Retrofit Link
Configuração do RetrofitAdicione a Lib Retrofit e o Converter GSON no Gradle:
compile 'com.squareup.retrofit2:retrofit:2.0.2'compile '
com.squareup.retrofit2:converter-gson:2.0.2'
Conceda permissão de INTERNET no AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
Crie os modelos:
Courses.java
public class Courses {
public String title;
public String subtitle;
public List<Instructor> instructors;
}
Instructor.java
public class Instructor {
public String name;
public String bio;
}
UdacityCatalog.java
public class UdacityCatalog {
public List<Courses> courses;
}
Crie a interface:
UdacityService.java
public interface UdacityService {
public static final String BASE_URL= "https://www.udacity.com/public-api/v0/";
@GET("courses")
Call<UdacityCatalog> listCatalog();
}
Agora no MainActivity implemente da seguinte forma:
public class MainActivity extends AppCompatActivity {
private static final String TAG = "retrofit2_gson";
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(UdacityService.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
UdacityService service = retrofit.create(UdacityService.class);
Call<UdacityCatalog> requestCatalog = service.listCatalog();
requestCatalog.enqueue(new Callback<UdacityCatalog>() {
@Override public void onResponse(Call<UdacityCatalog> call, Response<UdacityCatalog> response) {
if (!response.isSuccessful()) {
Log.i(TAG, "Error" + response.code());
}
else {
UdacityCatalog catalog = response.body();
for (Courses c : catalog.courses) {
Log.i(TAG, String.format("%s: %s", c.title, c.subtitle));
for (Instructor i : c.instructors) {
Log.i(TAG, i.name);
}
Log.i(TAG, "-------------");
}
}
}
@Override public void onFailure(Call<UdacityCatalog> call, Throwable t) {
Log.e(TAG, "Error" + t.getMessage()); }
});
}
}
Os dados serão apresentados da seguinte forma no seu terminal:
05-29 00:46:47.369 31300-31300/ I/retrofit2_gson: Deploying a Hadoop Cluster: Analyze Data with Hadoop and MapReduce
05-29 00:46:47.369 31300-31300/ I/retrofit2_gson: Mat Leonard
05-29 00:46:47.369 31300-31300/ I/retrofit2_gson: -------------
05-29 00:46:47.369 31300-31300/ I/retrofit2_gson: Scalable Microservices with Kubernetes: Master infrastructure management
05-29 00:46:47.369 31300-31300/ I/retrofit2_gson: Carter Morgan
05-29 00:46:47.369 31300-31300/ I/retrofit2_gson: Kelsey Hightower
Github para referencia: https://github.com/albertohugo/Retrofit2_Gson