POST archivo XML usando la línea de comando cURL
¿Cómo puedo PUBLICAR un archivo XML en un servidor local http://localhost:8080
usando cURL desde la línea de comando?
¿Qué comando debo usar?
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.
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
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