Chaque développeur Android devra travailler avec un réseau tôt ou tard. Android possède de nombreuses bibliothèques open source, telles que Retrofit, OkHttp ou, par exemple, Volley, sur lesquelles nous nous attarderons plus en détail aujourd'hui.À quoi ressemble cette bibliothèque?Volley est une bibliothèque HTTP qui simplifie et accélère la mise en réseau pour les applications Android.Code de bibliothèque GitHub .Donc, pour commencer avec Volley, nous devons l'ajouter à build.gradle (module: app):dependencies {
...
implementation 'com.android.volley:volley:1.1.1'
}
Il est également nécessaire d'ajouter la permission d'utiliser Internet dans le manifeste de notre application:<uses-permission android:name="android.permission.INTERNET" />
Ensuite, nous avons besoin d'une API. Dans ce tutoriel, j'utiliserai l'API météo de openweathermap.org/api .Exemple de cette APIPour commencer, nous allons créer un balisage simple pour afficher les données issues de l'API (Interface de programmation d'application).<?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>
Ensuite, accédez à MainActivity et créez les champs nécessaires: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;
Nous initialisons les champs de champ créés dans onCreate:tempTextView = findViewById(R.id.tempTextView);
windTextView = findViewById(R.id.windTextView);
mRequestQueue = Volley.newRequestQueue(this);
Nous arrivons maintenant au sujet principal de ce tutoriel - obtenir des données de l'API à l'aide de la bibliothèque Volley:1) Dans MainActivity, nous créons la méthode 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 a été utilisé pour ramener json à sa forme normale .Il convient de noter que les noms des objets doivent être écrits exactement de la même manière que dans notre API, sinon ils ne l'obtiendront tout simplement pas.2) Créez directement la méthode setValues:private void setValues() {
tempTextView.setText(": " + temp);
windTextView.setText(" : " + windSpeed);
}
3) Appelez les méthodes getWeather () et setValues () dans onCreate ():@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWeather(testUrl);
setValues();
}
4) Exécutez l'application et ... c'est fait!
PS: Quelques liens utiles pour ceux qui veulent mieux comprendre le problème:La documentation officielle de la bibliothèque VolleyPour une meilleure compréhension de l'essence de l'APITypes de requêtes HTTPÉcriture de données au format JSONP.SS: Fichiers d'application sur GitHub