multipart/form-data POST Request in Java
In Java, creating multipart/form-data POST requests was once feasible using Apache Commons HttpClient version 3.x. However, this capability was discontinued in version 4.0.
The HttpClient developers justified this removal by stating that multipart handling was outside the scope of the library's core HTTP functionality. They suggested looking for multipart code maintained by other projects but acknowledged being unaware of any such projects.
Workarounds using HttpClient 4.x
Despite the removal of dedicated multipart support, there are workarounds to create multipart requests using HttpClient 4.x. Here's an example:
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost uploadFile = new HttpPost("..."); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("field1", "yes", ContentType.TEXT_PLAIN); // Attach 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();
Note that as of HttpClient 4.3, some classes have been deprecated. Refer to the official documentation for updated API usage.
The above is the detailed content of How to Create Multipart/Form-Data POST Requests in Java After Apache HttpClient 3.x's Removal of Multipart Support?. For more information, please follow other related articles on the PHP Chinese website!