Tutorial HTTP GET Query Menggunakan Retrofit 2 di Android

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 :

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 :

Test Retrofit HTTP GET Query

Test Retrofit HTTP GET Query

Ketika kita masukkan nama yang lain, Jon Stark misalnya :

Test Retrofit dengan ganti parameters

Test Retrofit dengan ganti parameters

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 ! 😀

 





Download aplikasi kami di Google Play Store


Tutorial Menarik Lainnya :

Leave a Reply

Do NOT follow this link or you will be banned from the site!