En los días de la versión 3.x de Apache Commons HttpClient, era posible realizar una solicitud POST de múltiples partes / datos de formulario ( un ejemplo de 2004 ). Desafortunadamente, esto ya no es posible en la versión 4.0 de HttpClient .
Para nuestra actividad principal "HTTP", multiparte está algo fuera de alcance. Nos encantaría usar código de varias partes mantenido por algún otro proyecto para el que está dentro del alcance, pero no tengo conocimiento de ninguno. Intentamos mover el código multiparte a commons-codec hace unos años, pero no despegué allí. Oleg mencionó recientemente otro proyecto que tiene código de análisis de varias partes y podría estar interesado en nuestro código de formato de varias partes. No sé el estado actual de eso. ( http://www.nabble.com/multipart-form-data-in-4.0-td14224819.html )
¿Alguien sabe de alguna biblioteca de Java que me permita escribir un cliente HTTP que pueda realizar una solicitud POST de datos de formulario / varias partes?
Antecedentes: quiero usar la API remota de Zoho Writer .
Respuestas:
Usamos HttpClient 4.x para publicar archivos de varias partes.
ACTUALIZACIÓN : A partir de HttpClient 4.3 , algunas clases han quedado obsoletas. Aquí está el código con la nueva API:
A continuación, se muestra el fragmento de código original con la API HttpClient 4.0 obsoleta :
fuente
Estas son las dependencias de Maven que tengo.
Código Java:
Dependencias de Maven en pom.xml:
fuente
HttpEntity
claseSi el tamaño de los archivos JAR es importante (por ejemplo, en el caso de un subprograma), también se puede usar http: // pmime con java.net.HttpURLConnection en lugar de HttpClient.
Código:
Dependencia en pom.xml:
fuente
Utilice este código para cargar imágenes o cualquier otro archivo al servidor mediante publicación en varias partes.
requiere los siguientes archivos para cargar.
las bibliotecas están
httpclient-4.1.2.jar,
httpcore-4.1.2.jar,
httpmime-4.1.2.jar,
httpclient-cache-4.1.2.jar,
commons-codec.jar
ycommons-logging-1.1.1.jar
estarán en classpath.fuente
También puede utilizar REST Assured, que se basa en HTTP Client. Es muy simple:
fuente
multiPart("controlName", new File("/somedir/file.bin"))
consulte github.com/rest-assured/rest-assured/wiki/…Aquí hay una solución que no requiere bibliotecas.
Esta rutina transmite todos los archivos del directorio
d:/data/mpf10
aurlToConnect
fuente
httpcomponents-client-4.0.1
trabajó para mi. Sin embargo, tuve que agregar el jar externoapache-mime4j-0.6.jar
( org.apache.james.mime4j ); de lo contrarioreqEntity.addPart("bin", bin);
, no se compilaría. Ahora está funcionando a la perfección.fuente
Encontré esta muestra en la Guía de inicio rápido de Apache . Es para la versión 4.5:
fuente
Tenemos una implementación java pura de envío de formularios multiparte sin usar dependencias externas o bibliotecas fuera de jdk. Consulte https://github.com/atulsm/https-multipart-purejava/blob/master/src/main/java/com/atul/MultipartPure.java
fuente
Mi código publica multipartFile en el servidor.
fuente