POST archivo XML usando la línea de comando cURL

Resuelto Arnab Sen Gupta asked hace 14 años • 9 respuestas

¿Cómo puedo PUBLICAR un archivo XML en un servidor local http://localhost:8080usando cURL desde la línea de comando?

¿Qué comando debo usar?

Arnab Sen Gupta avatar Jun 09 '10 22:06 Arnab Sen Gupta
Aceptado

Si esa pregunta está relacionada con sus otras preguntas de Hudson, utilice el comando que proporcionan. De esta manera con XML desde la línea de comando:

$ curl -X POST -d '<run>...</run>' \
http://user:pass@myhost:myport/path/of/url

Necesita cambiarlo un poco para leer desde un archivo:

 $ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url

Lea la página de manual . siguiendo un resumen para -d Parámetro.

-d/--datos

(HTTP) Envía los datos especificados en una solicitud POST al servidor HTTP, de la misma manera que lo hace un navegador cuando un usuario completa un formulario HTML y presiona el botón enviar. Esto hará que curl pase los datos al servidor utilizando la aplicación de tipo contenido/x-www-form-urlencoded. Compárese con la forma -F/--.

-d/--data es lo mismo que --data-ascii. Para publicar datos puramente binarios, debes usar la opción --data-binary. Para codificar en URL el valor de un campo de formulario, puede utilizar --data-urlencode.

Si cualquiera de estas opciones se utiliza más de una vez en la misma línea de comando, los datos especificados se fusionarán con un símbolo & de separación. Por lo tanto, usar '-d nombre=daniel -d habilidad=pésima' generaría un fragmento de publicación que se parece a 'nombre=daniel&skill=pésima'.

Si comienza los datos con la letra @, el resto debe ser un nombre de archivo para leer los datos, o si desea que curl lea los datos desde la entrada estándar. El contenido del archivo ya debe estar codificado en URL. También se pueden especificar varios archivos. Por lo tanto, la publicación de datos desde un archivo llamado 'foobar' se haría con --data @foobar.

Peter Schuetze avatar Jun 09 '2010 17:06 Peter Schuetze

Desde la página de manual , creo que estos son los droides que estás buscando:

-F/--form <name=content>

(HTTP) Esto permite a curl emular un formulario completado en el que un usuario ha presionado el botón enviar. Esto provoca que los datos POST se enrollen utilizando el tipo de contenido multipart/form-data según RFC2388. Esto permite cargar archivos binarios, etc. Para forzar que la parte de 'contenido' sea un archivo, anteponga el nombre del archivo con un signo @.

Ejemplo, para enviar su archivo de contraseña al servidor, donde 'contraseña' es el nombre del campo de formulario al que /etc/passwd será la entrada:

curl -F password=@/etc/passwd www.mypasswords.com

Entonces, en tu caso, esto sería algo como
curl -F file=@/some/file/on/your/local/disk http://localhost:8080

Piskvor left the building avatar Jun 09 '2010 15:06 Piskvor left the building

Puedes usar la opción --data con el archivo.

Escriba contenido xml en un archivo llamado Soap_get.xml y use el comando curl para enviar la solicitud:

curl -X POST --header "Tipo de contenido:text/xml;charset=UTF-8" --data @soap_get.xml tu_url

 avatar Oct 29 '2014 06:10