„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie mache ich mit HttpClient mehrteilige/Formulardaten-POST-Anfragen in Java?

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

Veröffentlicht am 23.12.2024
Durchsuche:563

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

Erstellen einer mehrteiligen Formulardaten-Post-Anfrage mit Java

Mit der Einführung von Apache Commons HttpClient Version 4.0 entfiel die Möglichkeit, mehrteilige POST-Anfragen für Formulardaten durchzuführen waren in Version 3.x möglich. Das HttpClient-Team erklärte, dass Multipart-Funktionalität nicht zu seinen Kernaktivitäten gehöre, und empfahl die Suche nach alternativen Bibliotheken.

Eine geeignete Java-Bibliothek finden

Es stellt sich die Frage, welche Java-Bibliotheken bieten Multipart-/Formulardaten-POST-Anfragefunktionen. Eine solche Bibliothek ist HttpClient 4.x, die eine umfassende Lösung zum Stellen dieser Anfragen bietet.

Aktualisierter HttpClient 4.3-Code

Mit HttpClient-Versionen 4.3 und höher die API wurde aktualisiert und einige Klassen wurden veraltet. Der folgende Codeausschnitt veranschaulicht die überarbeitete Methode zum Erstellen mehrteiliger Dateibeiträge:

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();

Veralteter HttpClient 4.0-Code (als Referenz)

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();

Mit diesen Bibliotheken können Entwickler nahtlos HTTP-Clients erstellen, die mehrteilige POST-Anfragen/Formulardaten-Anfragen stellen können, sodass sie mit Webdiensten und APIs interagieren können, die diese Art von Anforderungen erfordern Anfrageformat.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3