enviar / publicar archivo xml usando la línea de comando curl

¿Cómo puedo enviar / publicar un archivo xml a un servidor local http: // localhost: 8080 usando curl desde la línea de comando?

¿Qué comando debería usar?

Si esa pregunta está relacionada con sus otras preguntas sobre Hudson, use el comando que brindan.

$ curl -X POST -d '4142430A02000' \ http://user:pass@myhost/hudson/job/_jobName_/postBuildResult 

Necesita cambiarlo un poco para leer desde un archivo:

  $ curl -X POST -d @myfilename http://user:pass@myhost/hudson/job/_jobName_/postBuildResult 

Lee la página de manual . siguiendo un resumen para el parámetro -d.

-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 ha rellenado un formulario HTML y presiona el botón Enviar. Esto hará que Curl pase los datos al servidor utilizando la aplicación de tipo de contenido / x-www-form-urlencoded. Compare con la forma -F / -.

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

Si alguna de estas opciones se usa más de una vez en la misma línea de comando, las piezas de datos especificadas se fusionarán junto con un símbolo de separación &. Por lo tanto, usar ‘-d name = daniel -d skill = lousy’ generaría un post que se parece a ‘name = daniel & skill = lousy’.

Si comienza los datos con la letra @, el rest debe ser un nombre de archivo para leer los datos, o – si desea que curl lea los datos de stdin. El contenido del archivo ya debe tener encoding URL. Múltiples archivos también pueden ser especificados. La publicación de datos de 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

(HTTP) Esto permite que curl emule un formulario rellenado en el que un usuario ha presionado el botón de enviar. Esto hace que los datos POST se doblen utilizando los datos multipart / form-data Content-Type según RFC2388. Esto permite subir archivos binarios, etc. Para forzar que la parte ‘contenido’ sea un archivo, agregue un signo @ al nombre del archivo.

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 así como
curl -F file=@/some/file/on/your/local/disk http://localhost:8080

Puede usar la opción –data con archivo.

Escribir contenido xml en un archivo llamado es soap_get.xml y usar el comando curl para enviar la solicitud:

curl -X POST – encabezado “Content-Type: text / xml; charset = UTF-8” –data @ soap_get.xml your_url

Con Jenkins 1.494, pude enviar un archivo a un parámetro de trabajo en Ubuntu Linux 12.10 usando curl con --form parámetros:

 curl --form name=myfileparam --form file=@/local/path/to/your/file.xml \ -Fjson='{"parameter": {"name": "myfileparam", "file": "file"}}' \ -Fsubmit=Build \ http://user:password@jenkinsserver/job/jobname/build 

En el servidor de Jenkins, configuré un trabajo que acepta un único parámetro: un parámetro de carga de archivos llamado myfileparam .

La primera línea de esa llamada curl construye un formulario web con un parámetro llamado myfileparam (igual que en el trabajo); su valor será el contenido de un archivo en el sistema de archivos local llamado /local/path/to/your/file.txt . El prefijo de símbolo @ le dice a curl que envíe un archivo local en lugar del nombre de archivo dado.

La segunda línea define una solicitud JSON que coincide con los parámetros de formulario en la línea uno: un parámetro de archivo llamado myfileparam .

La tercera línea activa el botón Generar del formulario. La cuarta línea es la URL del trabajo con el sufijo “/ build”.

Si esta llamada es exitosa, Curl devuelve 0 . Si no es exitoso, el error o excepción del servicio se imprime en la consola. Esta respuesta toma mucho de una vieja publicación de blog relacionada con Hudson , que deconstruí y volví a trabajar para mis propias necesidades.

A continuación, le mostramos cómo puede PUBLICAR XML en Windows usando la línea de comandos curl en Windows. Mejor uso de archivo por lotes / .cmd para eso:

 curl -i -X POST -H "Content-Type: text/xml" -d ^ "^ ^ ^ ^ ^Some-Param-01^ ^ ^SomePassW0rd^ ^ ^00^ ^ ^John Smith^ ^ ^9.97^ ^ ^4111111111111111^ ^ ^1118^ ^ ^123^ ^ ^1^ ^ ^Some Reference Text^ ^ ^john@smith.com^ ^ ^123.4.56.7^ ^ ^^ ^ ^^ ^ ^ ^ " "http://localhost:8080" 

Si tiene varios encabezados, puede usar lo siguiente:

 curl -X POST --header "Content-Type:application/json" --header "X-Auth:AuthKey" --data @hello.json Your_url 

Puedes usar este comando:

 curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: <>' -F file=@"/home/xxx/Desktop/customers.json" 'API_SERVER_URL' -k 

Si usa Curl en Windows:

 curl -H "Content-Type: application/xml" -d "MeHello!" http://localhost:8080/webapp/rest/hello