Maison >Java >javaDidacticiel >Comment effectuer des requêtes POST Multipart/Form-Data en Java ?

Comment effectuer des requêtes POST Multipart/Form-Data en Java ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-09 14:35:19305parcourir

How to Make Multipart/Form-Data POST Requests in Java?

Créer une requête POST Multipart/Form-Data en Java

L'encodage multipart/form-data de HTTP est couramment utilisé pour les téléchargements de fichiers, permettant aux clients d'envoyer à la fois du texte et données binaires en une seule requête. Bien qu'Apache Commons HttpClient 3.x prenait en charge cette fonctionnalité, elle a été supprimée dans la version 4.0. Cet article explore des bibliothèques Java alternatives qui permettent les requêtes POST multipart/form-data.

Malgré le recours au projet HttpClient, aucun effort n'est connu pour réimplémenter la prise en charge multipart. En tant que tels, les développeurs doivent rechercher des solutions alternatives pour leurs besoins en données multiparts/formulaires.

Solution

HttpClient 4.x, la version stable actuelle, offre une version plus moderne API pour gérer les requêtes en plusieurs parties. Voici un exemple utilisant l'API mise à jour :

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost("...");
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("field1", "yes", ContentType.TEXT_PLAIN);
File f = new File("[/path/to/upload]");
builder.addBinaryBody(
    "file",
    new FileInputStream(f),
    ContentType.APPLICATION_OCTET_STREAM,
    f.getName()
);
HttpEntity multipart = builder.build();
uploadFile.setEntity(multipart);
CloseableHttpResponse response = httpClient.execute(uploadFile);
HttpEntity responseEntity = response.getEntity();

Pour les développeurs utilisant toujours HttpClient 4.0 (non recommandé), l'extrait de code suivant utilise l'API obsolète :

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
FileBody bin = new FileBody(new File(fileName));
StringBody comment = new StringBody("Filename: " + fileName);
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("bin", bin);
reqEntity.addPart("comment", comment);
httppost.setEntity(reqEntity);
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();

Autres bibliothèques Java qui la prise en charge des requêtes POST multipart/form-data inclut :

  • Composants HTTP Apache HttpComponents-Client : une bibliothèque client HTTP moderne et thread-safe
  • API Jersey Client : une bibliothèque client de services Web RESTful de haut niveau et facile à utiliser
  • Grizzly REST Framework : un framework pour créer des services Web RESTful

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