2008-09-17 15:39:01 +0000 2008-09-17 15:39:01 +0000
2240
2240

¿Cuál es la sintaxis de la línea de comando cURL para hacer una solicitud POST?

¿Cómo puedo hacer una solicitud POST con la herramienta de línea de comando cURL ?

Respuestas (7)

2607
2607
2607
2008-09-17 15:43:28 +0000

Con campos:

curl --data "param1=value1¶m2=value2" https://example.com/resource.cgi

Con campos especificados individualmente:

curl --data "param1=value1" --data "param2=value2" https://example.com/resource.cgi

Multiparte:

curl --form "fileupload=@my-file.txt" https://example.com/resource.cgi

Multiparte con campos y un nombre de archivo:

curl --form "fileupload=@my-file.txt;filename=desired-filename.txt" --form param1=value1 --form param2=value2 https://example.com/resource.cgi

Sin datos:

curl --data '' https://example.com/resource.cgi

curl -X POST https://example.com/resource.cgi

curl --request POST https://example.com/resource.cgi

Para más información ver el manual de cURL. El tutorial de cURL sobre la emulación de un navegador web es útil.

Con libcurl, use la función curl_formadd() para construir su formulario antes de enviarlo de la manera habitual. Vea la documentación de libcurl para más información.

Para archivos grandes, considere agregar parámetros para mostrar el progreso de la carga:

curl --tr-encoding -X POST -v -# -o output -T filename.dat \
  http://example.com/resource.cgi

El -o output es necesario, de lo contrario no aparecerá ninguna barra de progreso.

517
517
517
2011-03-10 08:29:31 +0000

Para un RESTful HTTP POST que contenga XML:

curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:text/xml"

o para JSON, use esto:

curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:application/json"

Esto leerá el contenido del archivo llamado filename.txt y lo enviará como solicitud de correo.

137
137
137
2014-03-25 19:35:44 +0000

Datos de stdin con -d @-

Ejemplo:

echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown

Salida:

<p>Hello <strong>world</strong>!</p>
69
69
69
2008-09-17 15:42:15 +0000
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi

es el ejemplo que se encuentra en el Curl Example Manual .

Use %26 para los ampersands aunque si lo anterior no funciona:

curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
63
63
63
2012-03-04 02:21:37 +0000

La primera solicitud guarda la cookie de sesión (que se proporciona al iniciar la sesión con éxito) en el archivo de “encabezados”. A partir de ahora puedes usar esa cookie para autentificarte en cualquier parte del sitio web al que accedas habitualmente después de iniciar sesión con un navegador.

35
35
35
2008-09-17 15:43:02 +0000
curl -v --data-ascii var=value http://example.com

y hay muchas más opciones, revisa curl --help para más información.

33
33
33
2017-09-29 08:06:57 +0000

Si eres perezoso, puedes conseguir que Google Chrome o Firefox hagan todo el trabajo por ti.

  1. Haz clic con el botón derecho del ratón en el formulario que quieras enviar y selecciona Inspección (o Inspección Elemento para Firefox). Esto abrirá el panel de DevTools.
  2. Seleccione la pestaña Red en devtools y marque la casilla Preservar registro (Persist Logs para Firefox).
  3. Envíe el formulario y localice la entrada con el método POST (haga clic con el botón derecho del ratón en cualquier cabecera de columna y asegúrese de que Método esté marcado).
  4. Haga clic con el botón derecho del ratón en la línea con POST y seleccione Copiar > Copiar como cURL.

Chrome copiará todos los datos de la solicitud en la sintaxis de la cURL.

Chrome utiliza --data 'param1=hello&param2=world' que puede hacer más legible utilizando un solo -d o -F por parámetro dependiendo del tipo de solicitud POST que quiera enviar, que puede ser application/x-www-form-urlencoded o multipart/form-data en consecuencia.

Esto será POST-ed como application/x-www-form-urlencoded (utilizado para la mayoría de los formularios que no contienen subidas de archivos):

curl http://httpbin.org/post \
    -H "User-Agent: Mozilla/2.2" \
    -d param1=hello \
    -d name=dinsdale

Para un multipart/form-data POST use -F (típicamente usado con formularios que contienen subidas de archivos, o donde el orden de los campos es importante, o donde se requieren múltiples campos con el mismo nombre):

curl http://httpbin.org/post \
    -H "User-Agent: Mozilla/2.2" \
    -F param1=hello \
    -F name=dinsdale \
    -F name=piranha

El encabezado User-Agent no se necesita normalmente, pero lo he puesto por si acaso. Si necesitas un agente personalizado, puedes evitar tener que configurarlo en cada solicitud creando el archivo ~/.curlrc que contiene, por ejemplo, User-Agent: "Mozilla/2.2"