O cURL é o utilitário mágico que permite aos desenvolvedores baixar o conteúdo de um URL, explorar cabeçalhos de resposta, obter cotações de ações, confirmar que nossa codificação GZip está funcionandoe muito mais. Outro ótimo uso do cURL para linha de comando é o POST de dados de formulário para um servidor, especialmente ao testar o processamento de formulários moderado a avançado. E, assim como outros comandos cURL, o POST de dados de formulário é incrivelmente simples.


Postando dados de formulário com cURL


Inicie seu comando cURL com curl -X POST e, em seguida, adicione -F para cada field=value que o senhor deseja adicionar ao POST:



curl -X POST -F 'username=davidwalsh' -F 'password=something' http://domain.tld/post-to-me.php


Se o senhor estivesse usando PHP, poderia usar print_r no campo $_POST para verificar se o servidor recebeu os dados do POST conforme o esperado:



Array(
  'username' => 'davidwalsh',
  'password' => 'something'
)


Se precisar enviar um tipo de dados ou cabeçalho específico com o cURL, use -H para adicionar um cabeçalho:



# -d to send raw data
curl -X POST -H 'Content-Type: application/json' -d '{"username":"davidwalsh","password":"something"}' http://domain.tld/login


Postando arquivos com cURL


O POST de um arquivo com cURL é um pouco diferente, pois é necessário adicionar um @ antes do local do arquivo, após o nome do campo:



curl -X POST -F 'image=@/path/to/pictures/picture.jpg' http://domain.tld/upload


Usando o PHP para explorar o $_FILES mostraria os dados do arquivo como se ele tivesse sido carregado por meio de um formulário no navegador:



Array(
  "image": array(
    "name" => "picture.jpg"
    "type" => "image/jpeg",
    "tmp_name" => "/path/on/server/to/tmp/phprj5rkG",
    "error" => 0,
    "size" => 174476
  )
)


Postar o conteúdo de um arquivo com cURL é provavelmente mais fácil do que o senhor imaginava, certo?


Na primeira vez em que precisei fazer o POST de dados de arquivos a partir da linha de comando, pensei que teria que lutar muito; em vez disso, descobri que o cURL facilitou o processo!