J'ai trouvé beaucoup d'exemples sur la façon d'utiliser des commandes POST simples dans cURL, mais je n'ai pas trouvé d'exemples sur la façon d'envoyer des commandes HTTP POST complètes, qui contiennent:
- En-têtes (authentification de base)
- Paramètres HTTP (
s=1&r=33
) - Données de corps, une chaîne XML
Tout ce que j'ai trouvé c'est:
echo "this is body" | curl -d "ss=ss&qq=11" http://localhost/
Cela ne fonctionne pas et envoie les paramètres HTTP en tant que corps.
--header
ce qui n’est pas le casRéponses:
Pas assez de réputation pour commenter, alors laissez cela comme une réponse en espérant que cela vous aidera.
C’est ce que j’ai utilisé pour une opération de vente de seau S3. Les en-têtes sont dans -H et le corps qui est un fichier xml est dans $ {aclfile} après -T. Vous pouvez voir cela dans la sortie:
Si les paramètres url contiennent des signes spéciaux tels que "+", utilisez --data-urlencode pour chaque paramètre (contenant des signes spéciaux):
la source
Les "paramètres" HTTP font partie de l'URL:
L'authentification de base a une option distincte, il n'est pas nécessaire de créer un en-tête personnalisé:
Le "corps" POST peut être envoyé via
--data
(pourapplication/x-www-form-urlencoded
) ou--form
(pourmultipart/form-data
):Donc, pour résumer:
la source