Utilisation de Volley pour envoyer des paramètres JSON via POST

Pour envoyer une requête POST avec des paramètres en format JSON, nous pouvons utliiser la bibliothèque Volley. Voici comment procéder pour un cas simple :

Si vous avez besoin d'envoyer un JSON simple, vous pouvez utiliser un Map pour stocker les données et les converitr en JSONObject.

RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());

Map<String, String> params = new HashMap<>();
params.put("id", "id");
params.put("ncode", "ncode");
params.put("tradingName", "tradingName");

Log.d("map", params.toString());
JSONObject jsonObject = new JSONObject(params);

Log.e("TAG", "getdata: " + jsonObject.toString());

JsonRequest<JSONObject> jsonRequest = new JsonObjectRequest(Request.Method.POST, "URL_DU_SERVEUR", jsonObject,
        new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Log.d("TAG", "response -> " + response.toString());
            }
        }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Log.e("TAG", error.getMessage(), error);
    }
}) {
    @Override
    public Map<String, String> getHeaders() {
        HashMap<String, String> headers = new HashMap<>();
        headers.put("Accept", "application/json");
        headers.put("Content-Type", "application/json; charset=UTF-8");
        return headers;
    }
};
requestQueue.add(jsonRequest);

Dans cet exemple, la méthode new JSONObject(params) est utilisée pour convertir le Map en JSONObject.

Pour un JSON avec des données imbriquées, il suffit de créer un Map imbriqué. Par exemple, si merchant est également un JSONObject :

RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());

Map<String, String> merchant = new HashMap<>();
merchant.put("id", "id");
merchant.put("ncode", "ncode");
merchant.put("tradingName", "tradingName");

Map<String, Object> params = new HashMap<>();
params.put("billType", "ADHOC");
params.put("collectionCode", "string");
params.put("otherRefNo", "string");
params.put("contactMode", "SMS");
params.put("merchant", merchant);
params.put("currency", "SGD");
params.put("amount", "0.00");

Log.d("map", params.toString());
JSONObject jsonObject = new JSONObject(params);
// Le reste du code est identique, donc omis.

Ainsi, même avec des données imbriquées, la conversion en JSONObject reste simple.

Voici un aperçu des paramètres de JsonRequest :

  1. Méthode de requête (POST dans ce cas)
  2. URL de la requête
  3. Paramètres de la requête (null pour une requête GET)
  4. Callback pour la réponse du serveur (vous pouvez gérer différents codes de statut ici)
  5. Callbakc pour les erreurs (pour afficher des messages d'erreur simples)

Étiquettes: Volley JSON Android HTTP POST

Publié le 8 septembre à 21h05