Faire une demande de publication de données de formulaire en plusieurs parties avec Java
L'avènement d'Apache Commons HttpClient version 4.0 a éliminé la possibilité d'effectuer des requêtes POST en plusieurs parties/données de formulaire qui étaient possibles dans la version 3.x. L'équipe HttpClient a expliqué que les fonctionnalités multiparts n'entraient pas dans le cadre de leurs activités principales et a recommandé de rechercher des bibliothèques alternatives.
Trouver une bibliothèque Java appropriée
La question se pose de savoir laquelle Les bibliothèques Java offrent des capacités de requête POST multipart/form-data. L'une de ces bibliothèques est HttpClient 4.x, qui fournit une solution complète pour effectuer ces requêtes.
Code HttpClient 4.3 mis à jour
Avec les versions HttpClient 4.3 et supérieures, l'API a été mis à jour et certaines classes sont devenues obsolètes. L'extrait de code suivant illustre la méthode révisée pour créer des publications de fichiers en plusieurs parties :
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost uploadFile = new HttpPost("..."); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("field1", "yes", ContentType.TEXT_PLAIN); // This attaches the file to the POST: 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();
Code HttpClient 4.0 obsolète (pour référence)
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();
Avec ces bibliothèques, les développeurs peuvent créer de manière transparente des clients HTTP capables d'effectuer des requêtes POST multipart/form-data, leur permettant d'interagir avec les services Web et les API qui nécessitent ce type du format de demande.
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!