Heim >Java >javaLernprogramm >Wie mache ich mehrteilige/Formulardaten-POST-Anfragen in Java?

Wie mache ich mehrteilige/Formulardaten-POST-Anfragen in Java?

Susan Sarandon
Susan SarandonOriginal
2024-12-09 14:35:19356Durchsuche

How to Make Multipart/Form-Data POST Requests in Java?

Erstellen einer Multipart-/Formulardaten-POST-Anfrage in Java

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:

  • Apache HTTP Components HttpComponents-Client: Eine moderne, threadsichere HTTP-Client-Bibliothek
  • Jersey Client API: Eine hochwertige, benutzerfreundliche RESTful-Webservices-Client-Bibliothek
  • Grizzly REST Framework: Ein Framework zum Erstellen von RESTful-Webdiensten

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn