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 ne relevaient pas de la portée 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 4.3 et supérieures de HttpClient, 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 de format de demande.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3