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 iniUntuk 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";
RequestQueue mRequestQueue;
TextView tempTextView,windTextView;
double temp = 0,windSpeed = 0;
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,
url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject weather = response.getJSONObject("main"),wind = response.getJSONObject("wind");
temp = weather.getDouble("temp");
windSpeed = wind.getDouble("speed");
setValues();
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
mRequestQueue.add(request);
}
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!
PS: Beberapa tautan bermanfaat bagi mereka yang ingin memahami masalah ini secara lebih dalam:Dokumentasi resmi perpustakaan VolleyUntuk pemahaman yang lebih baik tentang esensi APIJenis permintaan HTTPMenulis data dalam format JSONP.SS: File aplikasi di GitHub