2010-03-31 11 views
5

Como parte de mi proceso de compilación Ant, me gustaría cargar archivos a un servidor web a través de publicaciones HTTP. Ant solo viene con una tarea HTTP Get. Sin embargo, Ant Contrib parece tener una tarea de publicación de HTTP. El problema es que no tiene ninguna Autenticación básica (como get does) ni ninguna forma de especificar la carga de un archivo (a pesar de lo que dicen los documentos, "rawFile" no es parte de la distribución).http post con hormiga para la carga de archivos

Mi pregunta es: ¿tarea posterior de Ant Contrib realmente apoyar lo que quiero, pero de una manera no evidente (tal vez tengo que hacerlo a mano)? ¿O hay alguna otra forma de hacer esto?

Respuesta

6

Uso del programa curl llamada a través de una tarea ANT Exec.

Para ejemplos enrollamiento leyeron este answer

+0

Eso es lo que me temía. Puedo hacer eso, pero eso significa que curl tiene que ser instalado, lo que significa que no puedes simplemente sacar el build.xml de svn y esperar que funcione. :( – paleozogt

+0

Te escucho, * y * para hacerte aún más miserable usando los plugins de ANT, no resuelve tus problemas a menos que también comprometas los frascos de terceros en subversión :-( –

0

Hay un montón de tareas de hormigas sobre la base de los Comunes Jakarta http cliente:

http://fikin-ant-tasks.sourceforge.net/

proporcionar también una tarea HTTP POST con la autenticación.

Al utilizar hormiga con exec que se abrirá un nuevo proceso fuera de la máquina virtual de Java. Deben evitarse los procesos externos de IMO si es posible.

P.S. : Si fikin tareas de hormigas poste/HTTP con autenticación básica se rompe yo preferiría escribir una clase java o incluso mi propia tarea con bienes comunes Jakarta, ver jakarta commons http client, sample for basic authentication2

por lo que puede funcionar en la misma máquina virtual como hormigas o tal vez en un proceso java en forma de horquilla
encontrará varios ejemplos para la carga de archivos con bienes comunes Jakarta HttpClient a través de Google ..

+0

Acepto que usar exe de hormigas es feo y yo preferiría usar Java puro. Sin embargo, las tareas de fikin ant están rotas para Autenticación básica. – paleozogt

+0

La tarea httpmpost de fikin parece no funcionar en el modo multi-threading. Por ejemplo: threadCount = 5 in para la tarea –

0

Hay una tarea posterior en http Antelope pero no parece apoyar la autenticación básica. :/

0

También hay un AntLib en el arenero hormiga here que pretende hacer HTTP GET y POST. Sin embargo, su autenticación también está rota.

0

Hice un parche para ant-contrib que agrega autenticación básica a la tarea de publicación. Con suerte, se incluye en el maletero. Mientras tanto, se puede construir desde la fuente y aplicar el parche a sí mismo:

http://sourceforge.net/tracker/?func=detail&aid=3110414&group_id=36177&atid=416922

Una vez que haya instalado el nuevo hormiguero contrib.jar, sólo tiene que añadir nombre de usuario y contraseña de atributos a la tarea posterior y debería funcionar bien La carga de archivos, no sé ...

6

He creado una tarea HTTP Apache 2.0 licencia completo y fácil de usar hormiga. Utiliza las clases de código java.net. * Y no tiene dependencias de biblioteca de terceros.

Se puede hacer de POST/PUT con los archivos o en línea entidades, y tiene opciones flexibles para establecer cabeceras necesarias, la autenticación y el código de estado de la comprobación de la insuficiencia de aprovechar los resultados inesperados.

http://missinglinkcode.wordpress.com/2011/03/15/apache-ant-http-task/

+0

Vaya, Alex> Acabo de ver su publicación arriba después de publicar mi sugerencia de Missing Link, espero que no te importe ;-) – Rebse

+0

Los ejemplos en el PDF para '' cierran la etiqueta '' con ''. Solo pensé que deberías saberlo. Gracias por la tarea ¡Probándolo ahora! :) –

+0

¿Es posible nombrar una entidad? Estoy tratando de lograr algo como: 'curl -u username -X PUT -F [email protected]/path/to/file.zip https: // some/api/foo/42'. Actualmente recibo un error de 500, y creo que es porque la entidad no se llama "archivo", esto se incluye como un requisito de la API. ¿Algún consejo? –