Risposte:
Con campi:
curl --data "param1=value1¶m2=value2" https://example.com/resource.cgi
Con i campi specificati individualmente:
curl --data "param1=value1" --data "param2=value2" https://example.com/resource.cgi
multipart:
curl --form "fileupload=@my-file.txt" https://example.com/resource.cgi
Multipart con campi e un nome file:
curl --form "fileupload=@my-file.txt;filename=desired-filename.txt" --form param1=value1 --form param2=value2 https://example.com/resource.cgi
Senza dati:
curl --data '' https://example.com/resource.cgi
curl -X POST https://example.com/resource.cgi
curl --request POST https://example.com/resource.cgi
Per ulteriori informazioni consultare il manuale di cURL . Il tutorial cURL sull'emulazione di un browser web è utile.
Con libcurl, utilizzare la curl_formadd()
funzione per compilare il modulo prima di inviarlo nel solito modo. Consulta la documentazione di libcurl per ulteriori informazioni.
Per file di grandi dimensioni, considera l'aggiunta di parametri per mostrare l'avanzamento del caricamento:
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
http://example.com/resource.cgi
Il -o output
è necessaria, altrimenti verrà visualizzata alcuna barra di avanzamento.
--data-urlencode
(no dash), almeno nelle ultime versioni
With Fields
, quando con Multipart
e quando Without Data
?
--data
te puoi usare -d
.
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 post.
curl -X POST
implica una richiesta POST HTTP, il -d
parametro (versione lunga :) --data
dice al ricciolo che quelli che seguono saranno parametri POST e @filename
designa il contenuto del file filename
come parametro. Questo approccio funziona al meglio con le API HTTP RESTful presenti su Twitter, Facebook, vari altri servizi Web tra cui Ruby on Rails e API HTTP di database come CouchDB. REST è l'acronimo di Rappresentational state transfer
-X POST
ciò che è implicito da -d
.
Dati da stdin con -d @-
Esempio:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
Produzione:
<p>Hello <strong>world</strong>!</p>
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
è l'esempio trovato nel Manuale di esempio Curl .
Utilizzare% 26 per le e commerciali, tuttavia se quanto sopra non funziona:
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
Se desideri accedere a un sito, procedi 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 dopo un accesso riuscito) nel file "headers". D'ora in poi puoi utilizzare quel cookie per autenticarti in qualsiasi parte del sito web a cui accedi di solito dopo aver effettuato l'accesso con un browser.
curl -v --data-ascii var=value http://example.com
e ci sono molte altre opzioni, controlla curl --help
per ulteriori informazioni.
Se sei pigro, puoi ottenere google-chrome per fare tutto il lavoro per te.
Chrome copierà tutti i dati della richiesta nella sintassi cURL.
Chrome utilizza ciò --data 'param1=hello¶m2=world'
che è possibile rendere più leggibile utilizzando un singolo parametro -d
o -F
per parametro a seconda del tipo di richiesta POST che si desidera inviare, che può essere o application/x-www-form-urlencoded
o di multipart/form-data
conseguenza.
Verrà pubblicato come POST application/x-www-form-urlencoded
( utilizzato per la maggior parte dei moduli che non contengono caricamenti di file ):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-d param1=hello \
-d name=dinsdale
Per un multipart/form-data
uso POST -F
( generalmente utilizzato con moduli che contengono caricamenti di file o in cui l'ordine dei campi è importante o in cui sono richiesti più campi con lo stesso nome ):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-F param1=hello \
-F name=dinsdale \
-F name=piranha
L' User-Agent
intestazione non è normalmente necessaria, ma l'ho buttata per ogni evenienza. È possibile evitare di impostare l'agente utente su ogni richiesta creando il ~/.curlrc
file che contiene ad esUser-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data