Jika sebelumnya saya lebih banyak menggunakan volley untuk rest api client, maka kali ini kita akan menggunakan library berbeda yaitu Retrofit 2.
Pada tutorial kita akan mencoba mengambil data berformat JSON dengan menggunakan retrofit.
Silahkan ikuti langkah-langkah di bawah ini :
1. Persiapkan data yang akan di ambil contohnya disini saya menggunakan data biasa yang saya tulis sendiri dalam format JSON.
{
"id" : 123456,
"nama" : "coding rakitan",
"umur" : 23,
"username" : "coding_rakitan"
}
2. Buka project yang ini di implementasikan penggunaan retrofit 2.
3. Buka build.gradle (Module: app) kemudian tambahkan dependencies berikut kemudian klik sync now.
// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.1.0'
// JSON Parsing
implementation 'com.google.code.gson:gson:2.6.1'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
4. Tambahkan izin penggunaan internet pada AndroidManifest.xml
...
<uses-permission android:name="android.permission.INTERNET"/>
...
Dan tambahkan pula code android:usesCleartextTraffic="true" kedalam tag aplication di AndroidManifest.xml.
...
<application
...
android:usesCleartextTraffic="true"
>
...
5. Buat sebuah package baru dengan nama "data" yang akan menampung 3 calass seperti DataModel, RetrofitClient, dan APIService.
6. Isi DataModel seperti berikut :
public class DataModel {
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("nama")
@Expose
private String nama;
@SerializedName("umur")
@Expose
private Integer umur;
@SerializedName("username")
@Expose
private String username;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNama() {
return nama;
}
public void setNama(String nama) {
this.nama = nama;
}
public Integer getUmur() {
return umur;
}
public void setUmur(Integer umur) {
this.umur = umur;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
7. Isi RetrofitClient seperti berikut :
public class RetrofitClient {
private static Retrofit retrofit = null;
private static final String IP = "192.168.43.140";
public static final String BASE_URL = "http://" +IP + "/retrofit/";
public static Retrofit getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
Catatan : Ganti ip dengan ip atau domain server kalian.
8. Isi APIService seperti berikut :
public interface APIService {
@GET("data.json")
Call<DataModel> getData();
}
9. Sekarang kode sudah bisa dijalankan pada activity ataupun class lain untuk mengambil data json. Sebagai contoh penggunaan pada MainActivity seperti berikut :
public class MainActivity extends AppCompatActivity {
Call<DataModel> data;
APIService apiService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
apiService = RetrofitClient.getClient().create(APIService.class);
data = apiService.getData();
data.enqueue(new Callback<DataModel>() {
@Override
public void onResponse(Call<DataModel> call, Response<DataModel> response) {
Log.d("DataModel", ""+new Gson().toJson(response.body()));
if (response.isSuccessful()){
Toast.makeText(MainActivity.this, "success", Toast.LENGTH_SHORT).show();
}else{
Log.d("errt", ""+response.errorBody());
Toast.makeText(MainActivity.this, ""+response.errorBody(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<DataModel> call, Throwable t) {
Log.d("DataModel", ""+t.getMessage());
Toast.makeText(getApplicationContext(), "Error : " + t.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
}
Pada kode di atas menginstruksikan program untuk menampilkan respon JSON pada log maka anda bisa melihat hasilnya pada logchat seperti berikut :
Kalau datanya mau dimasukin ke listview caranya bagaimana?
ReplyDelete