In den Tagen von Version 3.x von Apache Commons HttpClient war es möglich, eine POST-Anforderung für mehrere Teile / Formulardaten zu erstellen ( ein Beispiel aus dem Jahr 2004 ). Leider ist dies in Version 4.0 von HttpClient nicht mehr möglich .
Für unsere Kernaktivität "HTTP" ist Multipart etwas außerhalb des Geltungsbereichs. Wir würden gerne mehrteiligen Code verwenden, der von einem anderen Projekt verwaltet wird, für das er in den Geltungsbereich fällt, aber mir sind keine bekannt. Wir haben vor einigen Jahren versucht, den mehrteiligen Code in den Commons-Codec zu verschieben, aber ich bin dort nicht gestartet. Oleg hat kürzlich ein anderes Projekt erwähnt, das mehrteiligen Parsing-Code enthält und möglicherweise an unserem mehrteiligen Formatierungscode interessiert ist. Ich kenne den aktuellen Status dazu nicht. ( http://www.nabble.com/multipart-form-data-in-4.0-td14224819.html )
Ist jemandem eine Java-Bibliothek bekannt, mit der ich einen HTTP-Client schreiben kann, der eine POST-Anforderung für mehrere Teile / Formulardaten stellen kann?
Hintergrund: Ich möchte die Remote-API von Zoho Writer verwenden .
Antworten:
Wir verwenden HttpClient 4.x, um mehrteilige Dateien zu veröffentlichen.
UPDATE : Ab HttpClient 4.3 sind einige Klassen veraltet. Hier ist der Code mit neuer API:
Unten finden Sie den ursprünglichen Codeausschnitt mit der veralteten HttpClient 4.0-API :
quelle
Dies sind die Maven-Abhängigkeiten, die ich habe.
Java Code:
Maven-Abhängigkeiten in pom.xml:
quelle
HttpEntity
KlasseWenn die Größe der JARs von Bedeutung ist (z. B. im Falle eines Applets), kann httpmime auch direkt mit java.net.HttpURLConnection anstelle von HttpClient verwendet werden.
Code:
Abhängigkeit in pom.xml:
quelle
Verwenden Sie diesen Code, um Bilder oder andere Dateien mithilfe von mehrteiligen Beiträgen auf den Server hochzuladen.
Zum Hochladen sind die folgenden Dateien erforderlich.
Bibliotheken sind
httpclient-4.1.2.jar,
httpcore-4.1.2.jar,
httpmime-4.1.2.jar,
httpclient-cache-4.1.2.jar,
commons-codec.jar
undcommons-logging-1.1.1.jar
sollen im Klassenpfad sein.quelle
Sie können auch REST Assured verwenden , das auf dem HTTP-Client aufbaut. Es ist sehr einfach:
quelle
multiPart("controlName", new File("/somedir/file.bin"))
siehe github.com/rest-assured/rest-assured/wiki/…Hier ist eine Lösung, für die keine Bibliotheken erforderlich sind.
Diese Routine überträgt jede Datei im Verzeichnis
d:/data/mpf10
anurlToConnect
quelle
httpcomponents-client-4.0.1
arbeitete für mich. Allerdings musste ich das externe JARapache-mime4j-0.6.jar
( org.apache.james.mime4j ) hinzufügen, sonstreqEntity.addPart("bin", bin);
würde es nicht kompiliert. Jetzt funktioniert es wie Charme.quelle
Ich habe dieses Beispiel in der Apache- Kurzanleitung gefunden . Es ist für Version 4.5:
quelle
Wir haben eine reine Java-Implementierung von Multipart-Form Submit ohne Verwendung externer Abhängigkeiten oder Bibliotheken außerhalb von JDK. Siehe https://github.com/atulsm/https-multipart-purejava/blob/master/src/main/java/com/atul/MultipartPure.java
quelle
Mein Code post multipartFile to server.
quelle