O que é a sintaxe da linha de comando cURL para fazer uma solicitação POST?

2088

Como posso fazer uma solicitação POST com o cURL ferramenta de linha de comando?

    
por mic84 17.09.2008 / 17:39

7 respostas

2414

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 "[email protected]" https://example.com/resource.cgi

Multipartes com campos e um nome de arquivo:

curl --form "[email protected];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 do cURL . O tutorial cURL sobre como emular um navegador da Web é útil.

Com libcurl, use a função curl_formadd() para construir seu formulário antes de enviá-lo da maneira usual. Consulte a documentação do libcurl para obter mais informações.

Para arquivos grandes, considere 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

O -o output é necessário, caso contrário, nenhuma barra de progresso será exibida.

    
por 17.09.2008 / 17:43
487

Para um HTTP POST RESTful contendo XML:

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

ou para JSON, use isto:

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

Isso lerá o conteúdo do arquivo chamado filename.txt e o enviará como solicitação de postagem.

    
por 10.03.2011 / 09:29
121

Dados do stdin : use -d @- . Exemplo:

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

Saída:

<p>Hello <strong>world</strong>!</p>
    
por 25.03.2014 / 20:35
65
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi 

é o exemplo encontrado no Manual de Exemplo de Curvas .

Use% 26 para o "e" comercial, se o acima não funcionar:

curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi 
    
por 17.09.2008 / 17:42
58

Se você quiser fazer login em um site, faça o seguinte:

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

A primeira solicitação salva o cookie de sessão (fornecido após o login bem-sucedido) no arquivo "headers". De agora em diante, você pode usar esse cookie para autenticá-lo em qualquer parte do site que você normalmente acessa depois de fazer login com um navegador.

    
por 04.03.2012 / 03:21
32
curl -v --data-ascii var=value http://example.com

e há muitas outras opções, confira curl --help para mais informações.

    
por 17.09.2008 / 17:43
17

Se você é preguiçoso, pode obter o google-chrome para fazer todo o trabalho para você.

  1. Clique com o botão direito no formulário que você deseja enviar e selecione Inspecionar . Isso abrirá o painel DevTools.
  2. Selecione a guia Rede em devtools e marque a caixa de seleção Preservar log .
  3. Envie o formulário e localize a entrada com o método POST (clique com o botão direito do mouse em qualquer cabeçalho da coluna e verifique se o Método está marcado).
  4. Clique com o botão direito na linha com POST e selecione Copiar > Copiar como cURL .

OChromecopiarátodososdadosdasolicitaçãonasintaxecURL.

OChromeusa--data'param1=hello&param2=world',oquevocêpodetornarmaislegívelusandoumúnico-dou-Fporparâmetro,dependendodotipodesolicitaçãoPOSTquevocêdesejaenviar,quepodeserapplication/x-www-form-urlencodedoumultipart/form-dataemconformidade.

IssoseráPOST-edcomoapplication/x-www-form-urlencoded(usadoparaamaioriadosformuláriosquenãocontêmuploadsdearquivos):

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

Para um multipart/form-data POST use -F ( normalmente usado com formulários que contêm uploads de arquivos, ou onde a ordem dos campos é importante, ou onde vários campos com o mesmo nome são necessários ):

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

O cabeçalho User-Agent normalmente não é necessário, mas eu o joguei apenas por precaução. Você pode evitar a necessidade de definir o agente do usuário em cada solicitação criando o arquivo ~/.curlrc que contém, por exemplo, User-Agent: "Mozilla/2.2"

    
por 29.09.2017 / 10:06

Tags