Respostas:
Com campos:
curl --data "param1=value1¶m2=value2" https://example.com/resource.cgi
Com campos especificados 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 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 tutorial cURL sobre como emular um navegador da Web é útil.
Com a libcurl, use a curl_formadd()
função para criar seu formulário antes de enviá-lo da maneira usual. Veja a documentação da libcurl para 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
A -o output
é necessária, caso contrário nenhuma barra de progresso aparecerá.
--data-urlencode
(no dash), pelo menos nas versões recentes
With Fields
, quando Multipart
e quando Without Data
?
--data
você pode usar -d
.
Para um POST HTTP RESTful que contém 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 nomeado filename.txt
e o enviará como a solicitação de postagem.
curl -X POST
implica uma solicitação HTTP POST, o -d
parâmetro (versão longa :) --data
informa ao curl que o que se segue serão parâmetros POST e @filename
designa o conteúdo do arquivo filename
como parâmetro. Essa abordagem funciona melhor com as APIs HTTP RESTful encontradas no Twitter, no Facebook, em vários outros serviços da Web, incluindo Ruby on Rails, bem como nas APIs HTTP de bancos de dados, como o CouchDB. RESTO significa transferência de estado representacional
-X POST
que está implícito -d
.
Dados do stdin com -d @-
Exemplo:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
Resultado:
<p>Hello <strong>world</strong>!</p>
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
é o exemplo encontrado no manual de exemplo de ondulação .
Use% 26 para oe comercial, se o acima não funcionar:
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
Se você deseja 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 da sessão (fornecido após o login bem-sucedido) no arquivo "headers". A partir de agora, você pode usar esse cookie para autenticar você em qualquer parte do site que você costuma acessar após fazer login com um navegador.
curl -v --data-ascii var=value http://example.com
e há muito mais opções, verifique curl --help
para obter mais informações.
Se você é preguiçoso, pode fazer com que o google-chrome faça todo o trabalho por você.
O Chrome copiará todos os dados da solicitação na sintaxe cURL.
O Chrome usa --data 'param1=hello¶m2=world'
que você pode tornar mais legível usando um único parâmetro -d
ou -F
por parâmetro, dependendo do tipo de solicitação POST que você deseja enviar, que pode ser uma application/x-www-form-urlencoded
ou de multipart/form-data
acordo.
Isso será postado como application/x-www-form-urlencoded
( usado para a maioria dos formulários que não contêm uploads de arquivos ):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-d param1=hello \
-d name=dinsdale
Para multipart/form-data
uso em POST -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 User-Agent
cabeçalho não é normalmente necessário, mas eu tenho jogado em apenas no caso. Você pode evitar a necessidade de definir o agente do usuário em cada solicitação, criando o ~/.curlrc
arquivo que contém, por exemplo,User-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data