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:
@ tom-wijsman explicación: curl -X POSTimplica una solicitud HTTP POST, el -dparámetro (versión larga :) --datale dice a curl que lo que sigue serán parámetros POST y @filenamedesigna el contenido del archivo filenamecomo 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
soundmonster
1
¿Cómo podemos ver la respuesta xml no en una línea sino formateada?
Vitaly Zdanevich
66
Creo que puedes dejar de lado -X POSTya que eso está implícito -d.
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.
Si eres flojo, puedes hacer que google-chrome haga todo el trabajo por ti.
Haga clic derecho en el formulario que desea enviar y seleccione Inspeccionar . Esto abrirá el panel DevTools.
Seleccione la pestaña Red en devtools y marque la casilla Conservar registro .
Envíe el formulario y ubique la entrada con el método POST (haga clic con el botón derecho en cualquier encabezado de columna y asegúrese de que el Método esté marcado).
Haga clic derecho en la línea con POST y seleccione Copiar > Copiar como cURL .
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 -do -Fpor parámetro, según el tipo de solicitud POST que desea enviar, que puede ser application/x-www-form-urlencodedo en multipart/form-dataconsecuencia.
Esto se PUBLICARÁ como application/x-www-form-urlencoded( utilizado para la mayoría de los formularios que no contienen cargas de archivos ):
Para un multipart/form-datauso 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 ):
El User-Agentencabezado 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 ~/.curlrcarchivo que contiene, por ejemplo,User-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data
Respuestas:
Con campos:
Con campos especificados individualmente:
Multiparte:
Multiparte con campos y un nombre de archivo:
Sin datos:
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:
Se
-o output
requiere, de lo contrario no aparecerá la barra de progreso.fuente
--data-urlencode
(sin guión), al menos en versiones recientesWith Fields
, cuándoMultipart
y cuándoWithout Data
?--data
que pueda usar-d
.Para una POST HTTP RESTful que contiene XML:
o para JSON, use esto:
Esto leerá el contenido del archivo nombrado
filename.txt
y lo enviará como solicitud posterior.fuente
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 archivofilename
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:
Salida:
fuente
es el ejemplo encontrado en el Curl Example Manual .
Use% 26 para los símbolos de sin embargo si lo anterior no funciona:
fuente
Si desea iniciar sesión en un sitio, haga lo siguiente:
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.
fuente
y hay muchas más opciones, consulte
curl --help
para obtener más información.fuente
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 serapplication/x-www-form-urlencoded
o enmultipart/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 ):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 ):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"
fuente