command-line proyecto - enviar / publicar un archivo xml usando la línea de comando curl




implementacion biblioteca (8)

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

-F/--form <name=content>

(HTTP) Esto permite que Curl emule un formulario rellenado en el que un usuario ha presionado el botón Enviar. Esto provoca la curvatura de los datos de la POST utilizando el tipo de contenido multipart / form-data de acuerdo con RFC2388. Esto permite cargar archivos binarios, etc. Para forzar que la parte de 'contenido' sea un archivo, prefije el nombre del archivo con un signo @.

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

curl -F [email protected]/etc/passwd www.mypasswords.com

Así que en tu caso, esto sería algo así como
curl -F [email protected]/some/file/on/your/local/disk http://localhost:8080

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

¿Qué comando debo usar?


Puedes usar este comando:

curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: <<Removed>>' -F [email protected]"/home/xxx/Desktop/customers.json"  'API_SERVER_URL' -k 

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

$ curl -X POST -d '<run><log encoding="hexBinary">4142430A</log><result>0</result><duration>2000</duration></run>' \
http://user:[email protected]/hudson/job/_jobName_/postBuildResult

Necesitas cambiarlo un poco para leer de un archivo:

 $ curl -X POST -d @myfilename http://user:[email protected]/hudson/job/_jobName_/postBuildResult

Lea la página del manpage . 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 la forma -F / -.

-d / - datos es lo mismo que --data-ascii. Para publicar datos puramente binarios, debe utilizar 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 partes de datos especificadas se fusionarán junto con un símbolo & separador. Por lo tanto, el uso de '-d name = daniel -d skill = lousy' generaría una porción posterior que se parece a 'name = daniel & skill = lousy'.

Si inicia 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.


Si está utilizando curl en Windows:

curl -H "Content-Type: application/xml" -d "<?xml version="""1.0""" encoding="""UTF-8""" standalone="""yes"""?><message><sender>Me</sender><content>Hello!</content></message>" http://localhost:8080/webapp/rest/hello

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

Aquí es cómo puede POST XML en Windows usando la línea de comandos curl en Windows. Mejor uso el archivo batch / .cmd para eso:

curl -i -X POST -H "Content-Type: text/xml" -d             ^
"^<?xml version=\"1.0\" encoding=\"UTF-8\" ?^>                ^
    ^<Transaction^>                                           ^
        ^<SomeParam1^>Some-Param-01^</SomeParam1^>            ^
        ^<Password^>SomePassW0rd^</Password^>                 ^
        ^<Transaction_Type^>00^</Transaction_Type^>           ^
        ^<CardHoldersName^>John Smith^</CardHoldersName^>     ^
        ^<DollarAmount^>9.97^</DollarAmount^>                 ^
        ^<Card_Number^>4111111111111111^</Card_Number^>       ^
        ^<Expiry_Date^>1118^</Expiry_Date^>                   ^
        ^<VerificationStr2^>123^</VerificationStr2^>          ^
        ^<CVD_Presence_Ind^>1^</CVD_Presence_Ind^>            ^
        ^<Reference_No^>Some Reference Text^</Reference_No^>  ^
        ^<Client_Email^>[email protected]^</Client_Email^>       ^
        ^<Client_IP^>123.4.56.7^</Client_IP^>                 ^
        ^<Tax1Amount^>^</Tax1Amount^>                         ^
        ^<Tax2Amount^>^</Tax2Amount^>                         ^
    ^</Transaction^>                                          ^
" "http://localhost:8080"

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

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

curl -X POST --header "Content-Type: text / xml; charset = UTF-8" --data @ soap_get.xml your_url


Tuve que superar este problema yo mismo, al depurar aplicaciones web. -v es genial, pero un poco demasiado detallado para mi gusto. Esta es la solución (solo bash) que se me ocurrió:

curl -v http://example.com/ 2> >(sed '/^*/d')

Esto funciona porque la salida de -v se envía a stderr, no a stdout. Al redirigir esto a una subshell, podemos crear sed para eliminar las líneas que comienzan con * . Dado que la salida real no pasa a través de la subshell, no se ve afectada. El uso de un subshell es un poco torpe, pero es la forma más fácil de redirigir stderr a otro comando. (Como señalé, solo uso esto para las pruebas, por lo que funciona bien para mí).





xml command-line curl