HTTPs Multipart-/Formulardaten-Kodierung wird häufig für Datei-Uploads verwendet, sodass Clients sowohl Text als auch Text senden können Binärdaten in einer einzigen Anfrage. Während Apache Commons HttpClient 3.x diese Funktionalität unterstützte, wurde sie in Version 4.0 entfernt. In diesem Artikel werden alternative Java-Bibliotheken untersucht, die Multipart-/Formulardaten-POST-Anfragen ermöglichen.
Obwohl wir uns an das HttpClient-Projekt gewandt haben, sind keine Bemühungen bekannt, die Multipart-Unterstützung erneut zu implementieren. Daher müssen Entwickler nach alternativen Lösungen für ihre Multipart-/Formulardatenanforderungen suchen.
Lösung
HttpClient 4.x, die aktuelle stabile Version, bietet eine modernere Version API zur Bearbeitung mehrteiliger Anfragen. Hier ist ein Beispiel mit der aktualisierten API:
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();
Für Entwickler, die noch HttpClient 4.0 verwenden (nicht empfohlen), verwendet das folgende Codefragment die veraltete API:
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();
Andere Java-Bibliotheken, die Zur Unterstützung von Multipart-/Formulardaten-POST-Anfragen gehören:
Das obige ist der detaillierte Inhalt vonWie mache ich mehrteilige/Formulardaten-POST-Anfragen in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!