May 28, 2016

Criando o primeiro projeto usando Retrofit 2 para Android

Retrofit Link

Configuração do Retrofit

Adicione 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

No comments:

Post a Comment