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:
@ explicação do tom-wijsman: curl -X POSTimplica uma solicitação HTTP POST, o -dparâmetro (versão longa :) --datainforma ao curl que o que se segue serão parâmetros POST e @filenamedesigna o conteúdo do arquivo filenamecomo 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
soundmonster
1
Como podemos ver a resposta xml não em uma linha, mas formatada?
Vitaly Zdanevich 29/07
6
Eu acho que você pode deixar de lado o -X POSTque está implícito -d.
benjifisher
Como dar vários cabeçalhos?
Chave
Vários cabeçalhos: curl -H "header2: 1" -H "header2: 2" ...
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.
Se você é preguiçoso, pode fazer com que o google-chrome faça todo o trabalho por você.
Clique com o botão direito do mouse no formulário que você deseja enviar e selecione Inspecionar . Isso abrirá o painel do DevTools.
Marque a guia Rede no devtools e marque a caixa de seleção Preservar log .
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).
Clique com o botão direito do mouse na linha com POST e selecione Copiar > Copiar como cURL .
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 -dou -Fpor parâmetro, dependendo do tipo de solicitação POST que você deseja enviar, que pode ser uma application/x-www-form-urlencodedou de multipart/form-dataacordo.
Isso será postado como application/x-www-form-urlencoded( usado para a maioria dos formulários que não contêm uploads de arquivos ):
Para multipart/form-datauso 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 ):
O User-Agentcabeç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 ~/.curlrcarquivo que contém, por exemplo,User-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data
Respostas:
Com campos:
Com campos especificados individualmente:
Multipart:
Multipart com campos e um nome de arquivo:
Sem dados:
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:
A
-o output
é necessária, caso contrário nenhuma barra de progresso aparecerá.fonte
--data-urlencode
(no dash), pelo menos nas versões recentesWith Fields
, quandoMultipart
e quandoWithout Data
?--data
você pode usar-d
.Para um POST HTTP RESTful que contém XML:
ou para JSON, use isto:
Isso lerá o conteúdo do arquivo nomeado
filename.txt
e o enviará como a solicitação de postagem.fonte
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 arquivofilename
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:
Resultado:
fonte
é o exemplo encontrado no manual de exemplo de ondulação .
Use% 26 para oe comercial, se o acima não funcionar:
fonte
Se você deseja fazer login em um site, faça o seguinte:
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.
fonte
e há muito mais opções, verifique
curl --help
para obter mais informações.fonte
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 umaapplication/x-www-form-urlencoded
ou demultipart/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 ):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 ):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"
fonte