Menggunakan pustaka Volley di Android menggunakan data dari API cuaca sebagai contoh

Setiap pengembang Android harus bekerja dengan jaringan cepat atau lambat. Android memiliki banyak pustaka sumber terbuka, seperti Retrofit, OkHttp atau, misalnya, Volley, yang akan kita bahas lebih detail hari ini.

Jadi seperti apa perpustakaan ini?

Volley adalah perpustakaan HTTP yang menyederhanakan dan mempercepat jaringan untuk aplikasi Android.
Kode perpustakaan GitHub .

Jadi, untuk memulai dengan Volley, kita perlu menambahkannya ke build.gradle (module: app):

dependencies {
    ...
    implementation 'com.android.volley:volley:1.1.1'
}

Anda juga perlu menambahkan izin untuk menggunakan Internet dalam manifes aplikasi kami:

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

Selanjutnya kita membutuhkan API. Dalam tutorial ini, saya akan menggunakan API cuaca dari openweathermap.org/api .

Contoh API ini

Untuk memulainya, kami akan membuat markup sederhana untuk menampilkan data yang diambil dari API (Antarmuka pemrograman aplikasi).

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tempTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=": "
        android:textSize="20sp"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="50dp"
        android:layout_alignParentTop="true"
        android:layout_marginTop="50dp"
        />

    <TextView
        android:id="@+id/windTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="50dp"
        android:textSize="20sp"
        android:layout_marginTop="10dp"
        android:text=" :"
        />

</RelativeLayout>

Selanjutnya, buka MainActivity dan buat bidang yang diperlukan:

private static final String testUrl = "https://samples.openweathermap.org/data/2.5/weather?id=2172797&appid=b6907d289e10d714a6e88b30761fae22"; //url,      JSON- 
RequestQueue mRequestQueue; //  
TextView tempTextView,windTextView; //     
double temp = 0,windSpeed = 0; //      JSON

Kami menginisialisasi bidang bidang yang dibuat di onCreate:

tempTextView = findViewById(R.id.tempTextView);
windTextView = findViewById(R.id.windTextView);

mRequestQueue = Volley.newRequestQueue(this);

Sekarang kita sampai pada topik utama tutorial ini - mendapatkan data dari API menggunakan pustaka Volley:

1) Dalam MainActivity kita membuat metode GetWeather:

private void getWeather(String url) {
        final JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, //GET - API-   
                url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                try {
                    JSONObject weather = response.getJSONObject("main"),wind = response.getJSONObject("wind"); // JSON- main  wind (   - ,   -  (JSONArray).
                    temp = weather.getDouble("temp"); 
                    windSpeed = wind.getDouble("speed");
                    //      API
                    setValues(); //   setValues    
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() { //    
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
            }
        });

        mRequestQueue.add(request); //    
}

gambar
jsonformatter digunakan untuk membawa json ke bentuk normalnya .
Perlu dicatat bahwa nama-nama objek harus ditulis dengan cara yang persis sama seperti di API kami, jika tidak, mereka tidak akan mendapatkannya.

2) Buat, secara langsung, metode setValues:

private void setValues() {
        tempTextView.setText(": " + temp);
        windTextView.setText(" : " + windSpeed);
}

3) Panggil metode getWeather () dan setValues ​​() di onCreate ():

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getWeather(testUrl);
        setValues();
}

4) Jalankan aplikasi dan ... selesai!

gambar

PS: Beberapa tautan bermanfaat bagi mereka yang ingin memahami masalah ini secara lebih dalam:

Dokumentasi resmi perpustakaan Volley

Untuk pemahaman yang lebih baik tentang esensi API

Jenis permintaan HTTP

Menulis data dalam format JSON

P.SS: File aplikasi di GitHub

All Articles