Maison >Java >javaDidacticiel >Comment envoyer des requêtes multiparts avec Volley après la dépréciation de HttpEntity ?

Comment envoyer des requêtes multiparts avec Volley après la dépréciation de HttpEntity ?

DDD
DDDoriginal
2024-12-01 13:50:12912parcourir

How to Send Multipart Requests with Volley After HttpEntity Deprecation?

Demande multipart avec Volley sans HttpEntity

Introduction

Avec HttpEntity obsolète dans l'API22 et supprimé dans l'API23, les développeurs Android peuvent être confrontés à des difficultés lors de l'envoi de requêtes en plusieurs parties à l'aide de Volley. Cet article fournit un exemple de code fonctionnel pour les requêtes POST multipart avec Volley sans utiliser HttpEntity.

Code Implémentation

MultipartActivity.java :

package com.example.multipartvolley;

// ... As before

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ... As before

    byte[] fileData1 = getFileDataFromDrawable(context, R.drawable.ic_action_android);
    byte[] fileData2 = getFileDataFromDrawable(context, R.drawable.ic_action_book);

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    DataOutputStream dos = new DataOutputStream(bos);

    try {
        // ... As before
    } catch (IOException e) {
        // ... As before
    }

    String url = "http://192.168.1.100/api/postfile";
    MultipartRequest multipartRequest = new MultipartRequest(url, null, mimeType, multipartBody, new Response.Listener<NetworkResponse>() {
        @Override
        public void onResponse(NetworkResponse response) {
            // ... As before
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            // ... As before
        }
    });

    // ... As before
}

// ... Remaining methods

MultipartRequest.java :

package com.example.multipartvolley;

// ... As before

@Override
public String getBodyContentType() {
    return mMimeType;
}

@Override
public byte[] getBody() throws AuthFailureError {
    return mMultipartBody;
}

// ... Remaining methods

Mise à jour avec les données texte

Pour inclure des données texte dans le requête, vous pouvez remplacer la méthode getParams() dans VolleyMultipartRequest :

@Override
protected Map<String, String> getParams() {
    Map<String, String> params = new HashMap<>();

    // Add your text parameters
    params.put("api_token", "gh659gjhvdyudo973823tt9gvjf7i6ric75r76");
    params.put("name", "Angga");
    params.put("location", "Indonesia");

    return params;
}

Conclusion

Le code fourni fournit une solution pratique pour envoyer des requêtes en plusieurs parties avec Volley, même après la dépréciation de HttpEntity. En utilisant les méthodes décrites dans cet article, les développeurs peuvent facilement POSTER plusieurs fichiers et données texte sur un serveur sans avoir besoin d'implémentations complexes de HttpEntity.

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