Android Ajouter des en-têtes personnalisés à vos requêtes [par exemple pour l'authentification de base]


Exemple

Si vous devez ajouter des en-têtes personnalisés à vos demandes de volley, vous ne pouvez pas le faire après l'initialisation, car les en-têtes sont enregistrés dans une variable privée.

Au lieu de cela, vous devez remplacer la méthode getHeaders() de Request.class tant que telle:

new JsonObjectRequest(REQUEST_METHOD, REQUEST_URL, REQUEST_BODY, RESP_LISTENER, ERR_LISTENER) {
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        HashMap<String, String> customHeaders = new Hashmap<>();

        customHeaders.put("KEY_0", "VALUE_0");
        ...
        customHeaders.put("KEY_N", "VALUE_N");

        return customHeaders;
    }
};

Explication des paramètres:

  • REQUEST_METHOD - L'une des constantes Request.Method.* .
  • REQUEST_URL - L'URL complète à laquelle envoyer votre demande.
  • REQUEST_BODY - Un objet JSONObject contenant le POST-Body à envoyer (ou null).
  • RESP_LISTENER - Un objet Response.Listener<?> , Dont la onResponse(T data) est appelée après son achèvement.
  • ERR_LISTENER - Objet Response.ErrorListener dont la onErrorResponse(VolleyError e) est appelée sur une requête ayant échoué.

Si vous souhaitez créer une demande personnalisée, vous pouvez également y ajouter les en-têtes suivants:

public class MyCustomRequest extends Request {
    ...
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        HashMap<String, String> customHeaders = new Hashmap<>();

        customHeaders.put("KEY_0", "VALUE_0");
        ...
        customHeaders.put("KEY_N", "VALUE_N");

        return customHeaders;
    }
    ...
}