Sunday 18 October 2015

Mendapatkan JSON dari Server / URL untuk Android 1 ( Android JSON Parsing )

Text berformat JSON adalah salah satu cara untuk berkomunikasi antar platform. Pada tutorial kali ini, text berformat json digunakan untuk berkomunikasi antara website dengan android.

1. Buat New Project tutorial selengkapnya dapat dilihat pada : Membuat Aplikasi Dengan Android Studio 1
Gambar 1. Membuat project baru

2.  Copy source code dibawah ke MainActivity.java
(contoh text berformat json yang digunakan dari google maps api. Tutorial dapat dilihat pada: Mendapatkan Browser Api Key ( Google Maps Directions Api  )  . Dapat juga menggunakan text format json dari sumber lain coba googling)


import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

    TextView outputTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        outputTextView = (TextView) findViewById(R.id.output);
        Async a = new Async();
        a.execute("");

    }
    //  AsyncTask untuk  dapat melakukan koneksi dengan website dan juga berfungsi untuk multithreading
    public class Async extends AsyncTask<String, Integer, String> {

        @Override
        protected String doInBackground(String... params) {
            String data = "";
            try {
                data = downloadUrl("https://maps.googleapis.com/maps/api/directions/json?key=API_KEY_ANDA&origin=-6.649919,106.84452099999999&destination=-6.646100000000001,106.844472&sensor=false&units=metric&mode=driving&alternatives=true");
            } catch (Exception e) {

                Log.d("Background Task", e.toString());
            }
            return data;
        }

        @Override
        protected void onPostExecute(String result) {
            outputTextView.setText(result);

        }
    }

    private String downloadUrl(String strUrl) throws IOException {
        String data = "";
        InputStream iStream = null;
        HttpURLConnection urlConnection = null;
        try {
            URL url = new URL(strUrl);

            // membuat http connection untuk berkomunikasi url
            urlConnection = (HttpURLConnection) url.openConnection();

            // mengkoneksikan dengan url
            urlConnection.connect();

            // Membaca data dari url
            // Data yang sudah terbaca merupakan sequance data /  byte streams
            iStream = urlConnection.getInputStream();

            //byte stream yang sudah didapat didecode menjadi characters stream menggunakan InputStreamReader
            //BufferedReader akan membaca text dari character-input stream, dan melakukan buffering characters sehenggiga dapat dengan efesien membaca character, array dan perbaris
            BufferedReader br = new BufferedReader(new InputStreamReader(iStream));

            //StringBuffer digunkan untuk memodifikasi character-input stream menjadi String
            StringBuffer sb = new StringBuffer();

            String line = "";
            while ((line = br.readLine()) != null) { // jika saat baris dibaca berisi null maka tidak akan diinput ke sb
                sb.append(line);
            }

            data = sb.toString();

            br.close();

        } catch (Exception e) {
            Log.d("Exception url", e.toString());
        } finally {
            iStream.close();
            urlConnection.disconnect();
        }

        return data;
    }
}


3. Copy source code dibawah ke activity_main.xml

<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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView android:text="@string/hello_world" android:layout_width="wrap_content"  android:id="@+id/output"
        android:layout_height="wrap_content" />

</RelativeLayout>



4. Copy code dibawah pada AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" />

Gambar 2. Peletakan kode permission pada AndroidManifest.xml



Setelah itu run aplikasi



Hasilnya:
Gambar 3. Hasil dari program yang telah ditulis

Setelah Json diperoleh , json ini dapat diolah menggunakan method yang dimiliki object String namun dibutuhkan cara yang panjang maka biasanya menggunakan JSONObject .


Nantikan tutorial selanjutnya untuk mengolah text berformat Json diatas

Artikel Terkait Android ,PHP

2 comments: