Comment puis-je faire un multipart/form-data requête POST à l'aide de Java?
Dans les jours de la version 3.x d'Apache Commons HttpClient, faire un multipart/form-data POST demande a été possible (un exemple à partir de 2004). Malheureusement, ce n'est plus possible dans la version 4.0 de HttpClient.
Pour notre activité de base "HTTP", multipart est un peu
hors de portée. Nous aimerions utiliser multipart code entretenu par certains
autre projet pour lequel il est dans la portée, mais je ne suis pas au courant de tout.
Nous avons essayé de déplacer le multipart code de communes-codec quelques années
il y a, mais je n'ai pas pris de repos. Oleg récemment évoqué un autre
projet qui a multipart code d'analyse et pourraient être intéressés
dans notre multipart code de mise en forme. Je ne connais pas l'état actuel
sur que. (http://www.nabble.com/multipart-form-data-in-4.0-td14224819.html)
Est ce que quelqu'un au courant de toute bibliothèque Java qui me permet d'écrire un client HTTP qui peut rendre de type multipart/form-data requête POST?
Contexte: je veux utiliser le API à distance de Zoho Writer.
- voir aussi -- bayou.io/release/1.0/docs/http/Http_Client.html
Vous devez vous connecter pour publier un commentaire.
Nous utilisons HttpClient 4.x pour faire des fichier en plusieurs parties post.
Mise à JOUR: Comme de HttpClient 4.3, certaines classes ont été dépréciés. Voici le code avec la nouvelle API:
Ci-dessous est l'original de l'extrait de code avec obsolète HttpClient 4.0 API:
NoSuchMethodError: org.apache.http.entity.ContentType.create...
à MultipartEntityBuilder.buildEntity, à MultipartEntityBuilder. construction. quelle est la raison?Ce sont les dépendances Maven j'ai.
De Code Java:
Les Dépendances Maven dans pom.xml:
HttpEntity
classeSi la taille des Pots (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 en pom.xml:
Utiliser ce code pour télécharger des images ou d'autres fichiers sur le serveur à l'aide de post en plusieurs parties.
il exige ci-dessous les fichiers à télécharger.
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
être dans le classpath.Vous pouvez également utiliser Rassurez-vous qui s'appuie sur le Client HTTP. C'est très simple:
multiPart("controlName", new File("/somedir/file.bin"))
, voir github.com/rest-assured/rest-assured/wiki/...httpcomponents-client-4.0.1
a fonctionné pour moi. Cependant, j'ai dû ajouter le jar externeapache-mime4j-0.6.jar
(org.apache.james.mime4j) sinonreqEntity.addPart("bin", bin);
ne serait pas compiler. Maintenant il fonctionne comme un charme.J'ai trouvé cet exemple dans Apache Guide De Démarrage Rapide. C'est pour la version 4.5:
Voici une solution qui ne nécessite pas de bibliothèques.
Cette routine transmet chaque fichier dans le répertoire d:/data/mpf10 pour 'urlToConnect'
Nous avons un pur java mise en œuvre de plusieurs parties-soumettre le formulaire sans l'aide de toutes les dépendances externes ou des bibliothèques à l'extérieur du jdk. Reportez-vous https://github.com/atulsm/https-multipart-purejava/blob/master/src/main/java/com/atul/MultipartPure.java