una tesis teorico sistema proyecto marco implementacion escolar control bibliotecario biblioteca xml command-line curl

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



tesis implementacion de una biblioteca virtual pdf (8)

¿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?


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"


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 Jenkins, configuré un trabajo que acepta un solo parámetro: un parámetro de carga de archivos llamado myfileparam .

La primera línea de esa llamada de enrollamiento 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 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 Crear 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 tiene éxito, el error o la excepción del servicio se imprime en la consola. Esta respuesta toma mucho de una antigua publicación de blog relacionada con Hudson , que deconstruí y re-trabajé para mis propias necesidades.


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 password=@/etc/passwd www.mypasswords.com

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


Puedes usar este comando:

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


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


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:pass@myhost/hudson/job/_jobName_/postBuildResult

Necesitas cambiarlo un poco para leer de un archivo:

$ curl -X POST -d @myfilename http://user:pass@myhost/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