Encontrei muitos exemplos de como usar comandos POST simples no cURL, mas não encontrei exemplos de como enviar comandos HTTP POST completos, que contêm:
- Cabeçalhos (autenticação básica)
- Parâmetros HTTP (
s=1&r=33
) - Dados do corpo, alguma sequência XML
Tudo o que encontrei é:
echo "this is body" | curl -d "ss=ss&qq=11" http://localhost/
Isso não funciona e envia os parâmetros HTTP como o corpo.
--header
e este não fazRespostas:
Não há reputação suficiente para comentar, então deixe isso como uma resposta, esperando que ajude.
Isto é o que eu usei para uma operação S3 bucket acl put. Os cabeçalhos estão em -H e o corpo, que é um arquivo xml, está em $ {aclfile} após -T. Você pode ver isso na saída:
se os parâmetros de url contiverem sinais especiais como "+", use --data-urlencode para todos os parâmetros (contendo sinais especiais) deles:
fonte
"Parâmetros" HTTP fazem parte do URL:
A autenticação básica tem uma opção separada, não há necessidade de criar um cabeçalho personalizado:
O "corpo" do POST pode ser enviado via
--data
(paraapplication/x-www-form-urlencoded
) ou--form
(paramultipart/form-data
):Então, para resumir:
fonte