¿Cómo puedo enviar / publicar un archivo xml en un servidor local http: // localhost: 8080 usando curl desde la línea de comandos?
¿Qué comando debo usar?
fuente
¿Cómo puedo enviar / publicar un archivo xml en un servidor local http: // localhost: 8080 usando curl desde la línea de comandos?
¿Qué comando debo usar?
Si esa pregunta está conectada con sus otras preguntas de Hudson, use 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
Debe cambiarlo un poco para leerlo desde un archivo:
$ curl -X POST -d @myfilename http://user:pass@myhost:myport/path/of/url
Lee la página del 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 completado 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 el formulario -F / -.
-d / - los datos son los mismos que --data-ascii. Para publicar datos puramente binarios, debería usar la opción --data-binary. Para codificar en 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 con un símbolo de separación &. Por lo tanto, el uso de '-d name = daniel -d skill = lousy' generaría un fragmento de publicación similar a 'name = daniel & skill = lousy'.
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 de stdin. El contenido del archivo ya debe estar codificado en URL. También se pueden especificar varios archivos. Por lo tanto, publicar datos de un archivo llamado 'foobar' se haría con --data @foobar.
The contents of the file must already be URL-encoded.
Los archivos XML de OP seguramente no lo son.--header "Content-Type:application/xml"
que no se espera que codifique-L
, no la use-X POST
ya que hará que la solicitud redirigida use POST también. Si solo usas -d como sugiere @Tai, esto no sucederá-d
tiras saltos de línea de los archivos. Para evitar esto, use--data-binary
en su lugar.Desde la página de manual , creo que estos son los droides que estás buscando:
Entonces, en su caso, esto sería algo así como
curl -F file=@/some/file/on/your/local/disk http://localhost:8080
fuente
file=@-
es útil si desea canalizar su archivo.Puede usar la opción --data con archivo.
Escriba contenido xml en un archivo llamado es soap_get.xml y use el comando curl para enviar la solicitud:
fuente
Con 1.494 Jenkins, yo era capaz de enviar un archivo a un parámetro de trabajo en Ubuntu Linux 12.10 utilizar
curl
con--form
parámetros:En el servidor Jenkins, configuré un trabajo que acepta un solo parámetro: un parámetro de carga de archivo 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
. los@
prefijo del 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 del formulario en la línea uno: un parámetro de archivo llamado
myfileparam
.La tercera línea activa el botón Construir del formulario. La cuarta línea es la URL del trabajo con el sufijo "/ build".
Si esta llamada es exitosa, regresa curl
0
. Si no tiene éxito, el error o la 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.fuente
Aquí le mostramos cómo puede POSTAR XML en Windows usando la línea de comando curl en Windows. Mejor use el archivo por lotes / .cmd para eso:
fuente
Si tiene varios encabezados, puede utilizar lo siguiente:
fuente
Puedes usar este comando:
fuente
Si está utilizando curl en Windows:
fuente