Retrofit bir REST servisini GET ile çağrılması ve otomatik olarak bind edilmesi mümkündür. Aşağıdaki örnekte bu anlatılmaktadır:
Aşağıdakiler Gradle'a eklenir:
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
Converter olarak gson kullanacağız.
Dönüş nesnesi aşağıdaki gibidir :
public class CategoryResponse {
private Category[] categories;
private Item[] items;
public Category[] getCategories() {
return categories;
}
public void setCategories(Category[] categories) {
this.categories = categories;
}
public Item[] getItems() {
return items;
}
public void setItems(Item[] items) {
this.items = items;
}
}
Çağrılacak servis için bir interface yazılması gerekiyor :
public interface CategoryService {
@GET("/rest/category/child/{categoryId}")
public Call<categoryresponse> getChild(@Path("categoryId") long categoryId);
}
Yukarıdaki categoryId ile verilen bir kategorinin alt kategorileri alan bir servis için interface yaratılmıştır.
Category ve Item sınıfı temel özellikler içeren sınıflardır. Detayı bu örnek için önemli değildir.
Aşağıdaki gibi basit bir birim testi yaparak servis test edilebilir :
@Test
public void categoryChildTest() throws Exception{
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://www.example.com")
.addConverterFactory(GsonConverterFactory.create())
.build();
CategoryService service = retrofit.create(CategoryService.class);
Call responseCall=service.getChild(0);
Response response = responseCall.execute();
assertTrue(response.isSuccess());
assertNotNull(response.body());
assertNotNull(response.body().getCategories());
Category[] list=response.body().getCategories();
for(Category c : list){
System.out.println(c.getName());
}
}