Last Updated on 2 years by Mas Herdi
Halo semua, kali ini saya akan berbagi tentang bagaimana cara menggunakan Retrofit 2 untuk melakukan network request HTTP GET di Android. Sebelumnya kita telah belajar tentang cara menggunakan Retrofit untuk melakukan HTTP GET tanpa parameters di Android, sedangkan yang akan kita lakukan kali ini sama, melakukan HTTP GET request juga hanya bedanya request kita kali ini akan ditambahkan parameter query.
Untuk keperluan tutorial ini, saya telah membuat sebuah API sederhana :D, yang bisa diakses di http://twohgo.appspot.com/v1/, jadi nantinya aplikasi kita akan menembak ke sana.
Pre-Requisites
Oke, sebelum kita mulai ada baiknya kalian membaca dulu pre-requisites di bawah ini :
- Membuat Proyek Android Baru di Android Studio
- Melakukan HTTP GET Request Tanpa Param di Retrofit Android
HTTP GET Request Menggunakan Retrofit 2 di Android
Seperti biasa kita membuat project baru di Android Studio terlebih dahulu. Atau ada baiknya juga kalian mengikuti tutorial Retrofit sebelumnya, karena kita akan menggunakan project yang sama hanya beda di endpoint saja. 🙂
Pertama-tama, tambahkan dependency Retrofit 2 di build.gradle, dan juga permission Internet di AndroidManifest.xml
build.gradle
compile 'com.google.code.gson:gson:2.6.2' compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.retrofit2:converter-gson:2.1.0'
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET" />
Setelah itu, tambahkan endpoint URL baru pada file Const.java :
/** * Created by Hafizh Herdi on 5/1/2016. */ public class Const { private Const(){ } public static final String BASE_API_URL = "https://randomuser.me/"; public static final String BASE_API = "https://twohgo.appspot.com/"; public static final String API_VERSION = "v1/"; public static final String BASE_URL = BASE_API + API_VERSION; }
Membuat Interface Retrofit2 API Service
Endpoint yang akan kita akses untuk tutorial ini adalah url berikut :
https://twohgo.appspot.com/v1/storyofme?firstname=[firstname]&lastname=[lastname]
Karena itu, kita akan membuat Retrofit API service baru di project kita, sesuai dengan url tersebut, yang bernama TWOHAPIService.java
import java.util.HashMap; import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.http.FieldMap; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; import retrofit2.http.POST; import retrofit2.http.QueryMap; /** * Created by Hafizh Herdi on 10/15/2016. */ public interface TWOHAPIService { @GET("storyofme") Call<ResponseBody> getStoryOfMe(@QueryMap HashMap<String, String> params); }
Bisa dilihat pada codingan di atas, perbedaan dari yang sebelumnya adalah terdapat QueryMap yang berisi parameter key, value yang akan ditembakkan ke endpoint API saat melakukan HTTP GET request.
Melakukan API GET Request Menggunakan Retrofit
Jika sudah, langsung saja kita ke MainActivity.java dan melakukan initialize Retrofit 2 :
private Retrofit retrofit; private void initializeRetrofit(){ retrofit = new Retrofit.Builder() .baseUrl(Const.BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); }
Setelah itu, kita akan langsung mencoba untuk menembak GET Request ke endpoint tersebut, bedanya kali ini kita akan menyertakan query/request parameters berupa firstname dan lastname, seperti yang sudah dispesifikasikan di endpoint di atas. Params tersebut disimpan di dalam sebuah HashMap<String, String> :
private void queryJSON(){ HashMap<String, String> params = new HashMap<>(); params.put("firstname", "Arthur"); params.put("lastname", "Shelby"); TWOHAPIService apiService = twohRetro.create(TWOHAPIService.class); Call<ResponseBody> result = apiService.getStoryOfMe(params); result.enqueue(new Callback<ResponseBody>() { @Override public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { dialog.dismiss(); try { if(response.body()!=null) Toast.makeText(MainActivity.this," response message "+response.body().string(),Toast.LENGTH_LONG).show(); }catch (Exception e){ e.printStackTrace(); } } @Override public void onFailure(Call<ResponseBody> call, Throwable t) { dialog.dismiss(); t.printStackTrace(); } }); }
Demo
Okay, that’s all. Ketika dijalankan, kita akan mendapatkan balikan berupa JSON dan berisi firstname dan lastname yang kita inputkan. Karena kita memasukkan firstname = Arthur, dan lastname = Shelby. Maka balikan yang kita dapat adalah sebagai berikut :
Ketika kita masukkan nama yang lain, Jon Stark misalnya :
Oke guys, semoga membantu ! Untuk lebih lanjutnya kalian bisa pelajari dari source code lengkapnya yang bisa kalian download langsung di GitHub saya. Jangan lupa follow dan star project nya ya, silahkan berkomentar apabila ada yang kurang dimengerti. ? Keep awesome ! 😀