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 Multiparte quando Without Data?
--datate 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.txte lo invierà come richiesta di post.
curl -X POSTimplica una richiesta POST HTTP, il -dparametro (versione lunga :) --datadice al ricciolo che quelli che seguono saranno parametri POST e @filenamedesigna il contenuto del file filenamecome 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 POSTciò 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 --helpper 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 -do -Fper parametro a seconda del tipo di richiesta POST che si desidera inviare, che può essere o application/x-www-form-urlencodedo di multipart/form-dataconseguenza.
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-datauso 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-Agentintestazione non è normalmente necessaria, ma l'ho buttata per ogni evenienza. È possibile evitare di impostare l'agente utente su ogni richiesta creando il ~/.curlrcfile che contiene ad esUser-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data