Maison >Java >javaDidacticiel >Comment effectuer des requêtes 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 :
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!