Tutorial Menampilkan Error Response pada Retrofit 2 di Android

Pada beberapa tutorial sebelumnya, kita telah belajar tentang bagaimana cara menggunakan Retrofit 2 di Android, baik itu melakukan HTTP GET request maupun HTTP POST request. Kali ini kita akan belajar cara mendapatkan Error response dari Retrofit, yang dikirimkan oleh server. Error response ini akan dikirimkan apabila ada parameter yang kurang, atau salah pada saat melakukan network HTTP request. Error response ini biasanya mempunyai HTTP status 400 yang berarti “bad request”.

Sebagai contohnya, pada API yang saya buat di :

https://twohgo.appspot.com/v1/storyofme

Apabila kalian langsung melakukan request GET tanpa memasukkan parameter apa-apa, maka akan muncul JSON Result seperti berikut :

{
message: "Required param : 'lastname'. ",
status: 400
}

Sedangkan, apabila request nya benar / HTTP Request Code 200, response yang ditampilkan sebagai berikut :

https://twohgo.appspot.com/v1/storyofme?firstname=hafizh&lastname=herdi

{
message: "Hello hafizh from the house herdi! That's your story!",
status: 200
}

Nah sekarang bagaimana cara menampilkan error response tersebut dari sisi klien / Android saat mencoba mengakses? Jawabannya akan dibahas di tutorial ini 🙂

Menampilkan ErrorBody sebagai Error Response Retrofit 2 di Android

Sebelumnya, seperti biasa kalian diharuskan membaca terlebih dahulu tutorial-tutorial pre-requisites berikut ini :

Pre-requisites :

Oke, karena kita akan menggunakan project yang sama dengan utorial sebelumnya, jadi pastikan kalian sudah menyelesaikan tutorial-tutorial di atas terlebih dahulu. Jika sudah, buka Android Studionya dan langsung menuju ke file MainActivity.java. Di sana pada method queryJSON() kalian akan melihat codingan seperti di bawah ini :

        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();
                    if(response.errorBody()!=null)
                        Toast.makeText(MainActivity.this," response message "+response.errorBody().string(),Toast.LENGTH_LONG).show();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                dialog.dismiss();
                t.printStackTrace();
            }
        });

Bisa dilihat di atas, pada onResponse() dipanggil, akan dilakukan pengecekan pada Retrofit response.errorBody(). Dimana di bagian itulah error response dari server akan disimpan oleh Retrofit, dan untuk cara menampilkannya, kita cukup memanggil response.errorBody().string().

Demo

Untuk demonya, bisa coba dengan mengirimkan param kosong pada saat kita mengakses endpoint di atas, dan hasilnya akan muncul JSON error result seperti berikut sebagai error response Retrofit :

Contoh error ressponse pada retrofit Android

Contoh error ressponse pada retrofit Android

That’s all ! 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!