Tutorial Parsing Data JSON dengan Retrofit. Retrofit
adalah Rest Client untuk android dan java dari squareup. Pada tutorial
ini kita akan membuat aplikasi android untuk menjelaskan penggunaan HTTP
GET REQUEST menggunakan library retrofit. Untuk tutorial retrofit ini,
kita menggunakan data json yang sederhana dari web API.
http://api.teknorial.com/contohjson/
{
"admin": {
"id" :1,
"nama":"Reza Maulana",
"email":"rflash95@gmail.com",
"alamat":"Jl. Sukandroid ",
"status":"Aktif"
}
}
Kita sudah melihat data admin dari json,sekarang kita akan mencoba
mengambil data ini dengan aplikasi kita menggunakan library retrofit.
Tutorial Retrofit dengan Android Studio
1. Buat Project android baru.
2. Import Retrofit 2.0 dan converter-gson di build.gradle dalam dependencies.
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
3. Tambahkan internet permission di AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
4.
Buatlah package baru dengan nama models. Dengan menggunakan retrofit
kita tidak perlu parsing sendiri, kita perlu membuat model agar retrofit
dapat melakukan parsing dengan library nya. Ada dua cara membuat model
yaitu dengan cara manual dan otomatis. Cara manual bisa dipelajari di
tutorial
ini dan cara otomatis bisa menggunakan
jsonschema2pojo, pastekan kode json dari http://api.teknorial.com/contohjson/ ke dalam jsonscheme2pojo seperti gambar berikut
Kemudian klik preview untuk mengecek hasil generate ,download zip dan masukan kedalam package models seperti gambar berikut.
note : Ketika kita menggunakan code hasil generate dari jsonschematopojo, kita melihat error seperti gambar berikut
Secara default javax.annotation tidak ada di library android, tapi kita bisa menambahkannya di dependency
provided 'org.glassfish:javax.annotation:10.0-b28'
,tetapi kamu bisa menghapus annotation dan menggunakan hasil generate itu.
5. Buat Interface untuk menghandel request kita. Saya membuatnya dengan nama RestApi.java.
package com.teknorial.retrofit2tutorial.rest;
import com.teknorial.retrofit2tutorial.models.Models;
import retrofit2.Call;
import retrofit2.http.GET;
/**
* Created by Teknorial on 06/02/2016.
*/
public interface RestApi {
@GET("contohjson")
Call<Models> getDataAdmin();
}
6. Buka activity_main.xml dan modifikasi seperti berikut.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.teknorial.retrofit2tutorial.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="ID"
android:id="@+id/txt_id"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Nama"
android:id="@+id/txt_nama"
android:layout_below="@+id/txt_id"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Email"
android:id="@+id/txt_email"
android:layout_below="@+id/txt_nama"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Alamat"
android:id="@+id/txt_alamat"
android:layout_below="@+id/txt_email"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Status"
android:id="@+id/txt_status"
android:layout_below="@+id/txt_alamat"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
7. Buka MainActivity.java dan modifikasi seperti berikut.
package com.teknorial.retrofit2tutorial;
import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import com.teknorial.retrofit2tutorial.models.Models;
import com.teknorial.retrofit2tutorial.rest.RestApi;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class MainActivity extends AppCompatActivity {
public static final String ROOT_URL = "http://api.teknorial.com/";
private TextView txt_id;
private TextView txt_nama;
private TextView txt_email;
private TextView txt_alamat;
private TextView txt_status;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt_id = (TextView) findViewById(R.id.txt_id);
txt_nama = (TextView) findViewById(R.id.txt_nama);
txt_email = (TextView) findViewById(R.id.txt_email);
txt_alamat =(TextView) findViewById(R.id.txt_alamat);
txt_status = (TextView) findViewById(R.id.txt_status);
getData();
}
private void getData(){
final ProgressDialog loading = ProgressDialog.show(this, "Fetching Data","Please wait..",false,false);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ROOT_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
RestApi service = retrofit.create(RestApi.class);
Call<Models> call = service.getDataAdmin();
call.enqueue(new Callback<Models>() {
@Override
public void onResponse(Call<Models> call, Response<Models> response) {
try {
loading.dismiss();
String id = response.body().getAdmin().getId().toString();
String nama = response.body().getAdmin().getNama();
String email = response.body().getAdmin().getEmail();
String alamat = response.body().getAdmin().getAlamat();
String status = response.body().getAdmin().getStatus();
txt_id.setText("ID : "+ id);
txt_nama.setText("Nama : "+nama);
txt_email.setText("Email : "+email);
txt_alamat.setText("Alamat : "+alamat);
txt_status.setText("Status : "+status );
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void onFailure(Call<Models> call, Throwable t) {
}
}
);
}
}
Run Aplikasi yang sudah kita buat dan hasil akan seperti screenshot berikut.
Unknown
Wednesday, September 6, 2017
Related Posts