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

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-16 11:34:16841Durchsuche

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 entfällt die Möglichkeit, mehrteilige/Formulardaten-POST-Anfragen 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 ist 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 Entwickler können nahtlos HTTP-Clients erstellen, die in der Lage sind, mehrteilige POST-Anfragen/Formulardaten-Anfragen zu stellen, sodass sie mit Webdiensten und APIs interagieren können, die diesen Typ erfordern des Anfrageformats.

Das obige ist der detaillierte Inhalt vonWie mache ich mit HttpClient 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