Maison >Java >javaDidacticiel >Comment effectuer des requêtes POST en plusieurs parties avec Volley dans Android après la suppression de HttpEntity ?

Comment effectuer des requêtes POST en plusieurs parties avec Volley dans Android après la suppression de HttpEntity ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-30 18:17:12999parcourir

How to Make Multipart POST Requests with Volley in Android After HttpEntity's Removal?

Requêtes POST en plusieurs parties avec Volley et absence de HttpEntity

Dans l'API Android22, HttpEntity était obsolète et entièrement supprimé dans l'API23. Cet article fournit un exemple fonctionnel pour implémenter une requête multipart POST avec Volley sans HttpEntity. La solution proposée est testée avec l'API Web Asp.Net.

Détails d'implémentation

Le code se compose de deux classes :

MultipartActivity. java :

  1. Analyse les fichiers pouvant être dessinés en octets arrays.
  2. Construit un corps de requête en plusieurs parties avec les tableaux d'octets.
  3. Crée un objet MultipartRequest et l'ajoute à une file d'attente de requêtes.

MultipartRequest. java :

  1. Étend la classe Request et implémente les éléments nécessaires méthodes.
  2. Gère les en-têtes de requête, le type de contenu et le corps.
  3. Analyse la réponse du réseau et la transmet à l'auditeur.

Fonctionnalités supplémentaires

Ajout de texte Pièces :

Comme suggéré dans le code fourni, on peut ajouter des parties de texte à la requête en plusieurs parties à l'aide de la méthode getParams() :

@Override
protected Map<String, String> getParams() {
    Map<String, String> params = new HashMap<>();
    params.put("param1", "value1");
    params.put("param2", "value2");
    return params;
}

Code modulaire pour la réutilisabilité :

Pour améliorer la réutilisabilité, le code a été refactorisé :

class VolleyMultipartRequest extends Request<NetworkResponse>  {

    // ... other methods

    @Override
    protected Map<String, DataPart> getByteData() {
        // ... code for adding byte parts
    }
}

Exemple d'utilisation :

VolleyMultipartRequest request = new VolleyMultipartRequest(Method.POST, url, new Response.Listener<NetworkResponse>() {
    // ... listener code
}, new Response.ErrorListener() {
    // ... error listener code
}) {
    @Override
    protected Map<String, String> getParams() {
        // ...
    }
    @Override
    protected Map<String, DataPart> getByteData() {
        // ...
    }
};

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn