2012-07-11 14 views
5

Estoy tratando de encontrar una herramienta que me permita probar una solicitud POST multipart/form-data y ajustar la solicitud. En concreto, quiero probar la ausencia/presencia del punto y coma en la cabecera Content-Type:Cómo probar solicitud POST multipart/form-data

multipart/form-data; boundary=140f0f40c9f411e19b230800200c9a66 

Tenemos un cliente que no envía un punto y coma y nuestro nuevo servlet (usando Apache Commons FileUpload) no puede analizar el archivo cargado. La versión anterior de nuestro servlet utiliza un método de biblioteca diferente para aceptar/analizar la solicitud y puede analizar el archivo. Hasta que no pueda probar que la solicitud será exitosa al incluir el punto y coma, los propietarios de la aplicación cliente no desean realizar ningún cambio en ella.

He estado usando cURL para ejecutar mis pruebas contra el servlet, pero no puedo ajustar la solicitud que genera para excluir el punto y coma. He probado el complemento Cartel para Firefox y Fiddler para generar una solicitud POST prueba, pero como resultado de este error:

org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly 

Alguien ha encontrado una manera de probar con éxito una solicitud POST multipart/form-data con una subida ¿archivo?

Respuesta

1

Puede utilizar curl para probar estas bibliotecas, aquí está un ejemplo usando un POST multipart/form-data: https://stackoverflow.com/a/10765244/72176

Una cosa que me gusta de una herramienta de línea de comandos como rizo es que es fácil de repetir (en bash , hasta & enter), y puede guardar la prueba para más adelante.

Editar: Definitivamente es posible enviar el encabezado personalizado que desea probar. La clave es usar comandos crudos de curl sobre los métodos de conveniencia que formatean la solicitud por usted. Use -H para pasar el encabezado sin formato y use --data-binary para pasar el cuerpo desde un archivo sin cambiar los finales de línea (muy importante para multipart/form-data que debe tener terminaciones de línea CRLF). He aquí un ejemplo:

curl -X POST -H "Content-Type: multipart/form-data; boundary=----------------------------4ebf00fbcf09" --data-binary @test.txt http://localhost:3000/test 

de si es más conveniente no utilizar el archivo intermedio, se puede escribir una sola línea de este modo:

curl -X POST -H "Content-Type: multipart/form-data; boundary=----------------------------4ebf00fbcf09" -d $'------------------------------4ebf00fbcf09\r\nContent-Disposition: form-data; name="example"\r\n\r\ntest\r\n------------------------------4ebf00fbcf09--\r\n' http://localhost:3000/test 

Estos 2 ejemplos incluyen el punto y coma, pero se puede quitar como sea necesario.

+0

Estaba/do uso curl pero, como se explica en mi pregunta, no pude usarlo para ajustar los datos del encabezado de solicitud. – sdoca

+0

He actualizado mi respuesta, estoy bastante seguro de que puede hacerlo. Evite los métodos de formulario de conveniencia y especifique los encabezados directamente. –

+0

Gracias. Ya no necesito hacer los ajustes, pero es bueno saber que puede haber otra opción si surge la necesidad nuevamente. – sdoca