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

Qual è la sintassi della riga di comando cURL per fare una richiesta POST?

Come posso fare una richiesta POST con lo strumento cURL della riga di comando?

Risposte (7)

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

Con campi:

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

Con campi specificati individualmente:

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

Multipart:

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

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

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

Multipart con campi e nome file:

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

Senza dati:

&001

Per ulteriori informazioni vedere il manuale cURL . Il tutorial cURL sull'emulazione di un browser web è utile.

Con libcurl, usare la funzione curl_formadd() per costruire il modulo prima di inviarlo nel solito modo. Vedere la documentazione libcurl per maggiori informazioni.

Per i file di grandi dimensioni, considerare l'aggiunta di parametri per mostrare l'avanzamento dell'upload:

&001

Il -o output è richiesto, altrimenti non apparirà alcuna barra di avanzamento.

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

Per un POST HTTP RESTful contenente XML:

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

o per JSON, utilizzare questo:

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

Questo leggerà il contenuto del file denominato filename.txt e lo invierà come richiesta di posta.

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

Dati da stdin con -d @-

Esempio:

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

Uscita:

<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

è l'esempio che si trova nel Manuale di Esempio di Curl .

Usare %26 per gli amperand, però, se quanto sopra non funziona:

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

Se si desidera effettuare il login in un sito, procedere come segue:

curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/

La prima richiesta salva il cookie di sessione (che viene fornito al momento del login con successo) nel file “headers”. D'ora in poi potete usare quel cookie per autenticarvi in qualsiasi parte del sito web a cui accedete di solito dopo aver effettuato il login con un browser.

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

e ci sono molte altre opzioni, controllare curl --help per ulteriori informazioni.

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

Se siete pigri, potete farvi fare tutto il lavoro da google-chrome o firefox.

  1. 1. Cliccare con il tasto destro del mouse sul modulo che si desidera inviare e selezionare Inspect (o Inspect Element per Firefox). Si aprirà il pannello DevTools.
  2. Fare clic con il tasto destro del mouse sul modulo che si desidera inviare e selezionare Inspect (o Inspect Element per Firefox). 2. Selezionare la scheda Network in devtools e spuntare la casella di controllo Preserve log ( Persist Logs per firefox).
  3. Selezionare la scheda Network in devtools e spuntare la casella di controllo Preserve log ( Persist Logs per firefox).
  4. Selezionare la scheda Persist Logs_ per firefox. 3. Inviare il modulo e localizzare la voce con il metodo POST (cliccare con il tasto destro del mouse su qualsiasi intestazione di colonna e assicurarsi che Metodo sia spuntata).
  5. Selezionare la scheda Rete in devtools e spuntare la casella di controllo Metodo. 5. Cliccare con il tasto destro del mouse sulla riga con POST e selezionare Copia > Copia come cURL.

Chrome copierà tutti i dati della richiesta in sintassi cURL.

Chrome utilizza --data 'param1=hello&param2=world' che si può rendere più leggibile utilizzando un singolo -d o -F per parametro a seconda del tipo di richiesta POST che si vuole inviare, che può essere sia application/x-www-form-urlencoded o multipart/form-data di conseguenza.

Questo sarà POST-ed come application/x-www-form-urlencoded (usato per la maggior parte dei moduli che non contengono upload di file):

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

Per un POST multipart/form-data usare -F (tipicamente usato con i form che contengono upload di file, o dove l'ordine dei campi è importante, o dove sono richiesti più campi con lo stesso nome):

&001 &001

L'intestazione User-Agent non è normalmente necessaria, ma l'ho gettata in caso di necessità. Se si ha bisogno di un agente personalizzato, si può evitare di impostarlo su ogni richiesta creando il file ~/.curlrc che contiene ad esempio User-Agent: "Mozilla/2.2"