Qual é a sintaxe da linha de comando cURL para fazer um pedido POST?

Como posso fazer um pedido POST com a ferramenta de linha de comando cURL?

Com campos:

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

Com campos especificados individualmente:

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

Multipartes:

curl --form "fileupload=@my-file.txt" https://example.com/resource.cgi

Multiparte com campos e um nome de arquivo:

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

Sem dados:

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

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

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

Para mais informações, consulte o manual cURL. O manual cURL sobre emular um navegador web é útil.

Com a libcurl, utilize a função curl_formadd() para construir seu formulário antes de enviá-lo da forma usual. Veja a documentação da libcurl para mais informações.

Para arquivos grandes, considere a possibilidade de adicionar parâmetros para mostrar o progresso do upload:

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

A `-o output' é necessária, caso contrário não aparecerá nenhuma barra de progresso.

Comentários (6)
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi 

é o exemplo encontrado no Manual de Exemplo de Curl.

Use %26 para os amplificadores, embora se o acima não funcionar:

curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi 
Comentários (0)
curl -v --data-ascii var=value http://example.com

e há muitas mais opções, marque `curl --help' para mais informações.

Comentários (0)