À l'époque de la version 3.x d'Apache Commons HttpClient, il était possible de faire une requête POST multipart / form-data ( un exemple de 2004 ). Malheureusement, cela n'est plus possible dans la version 4.0 de HttpClient .
Pour notre activité principale "HTTP", le multipart est quelque peu hors de portée. Nous serions ravis d'utiliser du code en plusieurs parties maintenu par un autre projet pour lequel il est dans la portée, mais je n'en connais aucun. Nous avons essayé de déplacer le code en plusieurs parties vers le codec commun il y a quelques années, mais je n'ai pas décollé là-bas. Oleg a récemment mentionné un autre projet qui a un code d'analyse en plusieurs parties et pourrait être intéressé par notre code de formatage en plusieurs parties. Je ne connais pas la situation actuelle à ce sujet. ( http://www.nabble.com/multipart-form-data-in-4.0-td14224819.html )
Quelqu'un a-t-il connaissance d'une bibliothèque Java qui me permet d'écrire un client HTTP capable de faire une requête POST multipart / form-data?
Contexte: je souhaite utiliser l' API distante de Zoho Writer .
Réponses:
Nous utilisons HttpClient 4.x pour publier des fichiers en plusieurs parties.
MISE À JOUR : Depuis HttpClient 4.3 , certaines classes sont obsolètes. Voici le code avec la nouvelle API:
Vous trouverez ci-dessous l'extrait de code d'origine avec l' API HttpClient 4.0 obsolète :
la source
Ce sont les dépendances Maven que j'ai.
Code Java:
Dépendances Maven dans pom.xml:
la source
HttpEntity
classeSi la taille des JAR est importante (par exemple dans le cas de l'applet), on peut aussi utiliser directement httpmime avec java.net.HttpURLConnection au lieu de HttpClient.
Code:
Dépendance dans pom.xml:
la source
Utilisez ce code pour télécharger des images ou tout autre fichier sur le serveur en utilisant la publication en plusieurs parties.
il faut télécharger les fichiers ci-dessous.
les bibliothèques sont
httpclient-4.1.2.jar,
httpcore-4.1.2.jar,
httpmime-4.1.2.jar,
httpclient-cache-4.1.2.jar,
commons-codec.jar
etcommons-logging-1.1.1.jar
doivent être dans classpath.la source
Vous pouvez également utiliser REST Assured qui s'appuie sur le client HTTP. C'est très simple:
la source
multiPart("controlName", new File("/somedir/file.bin"))
voir github.com/rest-assured/rest-assured/wiki/…Voici une solution qui ne nécessite aucune bibliothèque.
Cette routine transmet chaque fichier du répertoire
d:/data/mpf10
àurlToConnect
la source
httpcomponents-client-4.0.1
travaillé pour moi. Cependant, j'ai dû ajouter le jar externeapache-mime4j-0.6.jar
( org.apache.james.mime4j ) sinonreqEntity.addPart("bin", bin);
je ne compilerais pas. Maintenant ça marche comme du charme.la source
J'ai trouvé cet exemple dans le guide de démarrage rapide d'Apache . C'est pour la version 4.5:
la source
Nous avons une implémentation pure Java de la soumission de formulaires en plusieurs parties sans utiliser de dépendances externes ou de bibliothèques en dehors de jdk. Reportez-vous à https://github.com/atulsm/https-multipart-purejava/blob/master/src/main/java/com/atul/MultipartPure.java
la source
Mon code poste multipartFile au serveur.
la source