Respuestas:
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 obtener más información, consulte el manual de cURL . El tutorial de cURL sobre la emulación de un navegador web es útil.
Con libcurl, use la curl_formadd()
función para construir su formulario antes de enviarlo de la manera habitual. Consulte la documentación de libcurl para obtener más información.
Para archivos grandes, considere agregar parámetros para mostrar el progreso de carga:
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
http://example.com/resource.cgi
Se -o output
requiere, de lo contrario no aparecerá la barra de progreso.
--data-urlencode
(sin guión), al menos en versiones recientes
With Fields
, cuándo Multipart
y cuándo Without Data
?
--data
que pueda usar -d
.
Para una POST HTTP RESTful que contiene 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 nombrado filename.txt
y lo enviará como solicitud posterior.
curl -X POST
implica una solicitud HTTP POST, el -d
parámetro (versión larga :) --data
le dice a curl que lo que sigue serán parámetros POST y @filename
designa el contenido del archivo filename
como parámetro. Este enfoque funciona mejor con las API RESTful HTTP que se encuentran en Twitter, Facebook, varios otros servicios web, incluido Ruby on Rails, así como las API HTTP de bases de datos como CouchDB. REST significa Transferencia de estado representativa
-X POST
ya que eso está implícito -d
.
Datos de stdin con -d @-
Ejemplo:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
Salida:
<p>Hello <strong>world</strong>!</p>
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
es el ejemplo encontrado en el Curl Example Manual .
Use% 26 para los símbolos de sin embargo si lo anterior no funciona:
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
Si desea iniciar sesión en un sitio, haga lo siguiente:
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
La primera solicitud guarda la cookie de sesión (que se proporciona al iniciar sesión correctamente) en el archivo "encabezados". A partir de ahora, puede usar esa cookie para autenticarlo en cualquier parte del sitio web al que generalmente acceda después de iniciar sesión con un navegador.
curl -v --data-ascii var=value http://example.com
y hay muchas más opciones, consulte curl --help
para obtener más información.
Si eres flojo, puedes hacer que google-chrome haga todo el trabajo por ti.
Chrome copiará todos los datos de la solicitud en sintaxis de cURL.
Chrome utiliza --data 'param1=hello¶m2=world'
lo que puede hacer más legible mediante el uso de un solo parámetro -d
o -F
por parámetro, según el tipo de solicitud POST que desea enviar, que puede ser application/x-www-form-urlencoded
o en multipart/form-data
consecuencia.
Esto se PUBLICARÁ como application/x-www-form-urlencoded
( utilizado para la mayoría de los formularios que no contienen cargas de archivos ):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-d param1=hello \
-d name=dinsdale
Para un multipart/form-data
uso POST -F
( generalmente usado con formularios que contienen cargas 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 User-Agent
encabezado normalmente no es necesario, pero lo he arrojado por si acaso. Puede evitar tener que configurar el agente de usuario en cada solicitud creando el ~/.curlrc
archivo que contiene, por ejemplo,User-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data