Comment puis-je faire un POST avec le cURL outil en ligne de commande ?
@LauriRanta --data-urlencode
(sans tiret), du moins dans les versions récentes
Avec des champs :
curl --data "param1=value1¶m2=value2" https://example.com/resource.cgi
Avec des champs spécifiés individuellement :
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 avec des champs et un nom de fichier :
curl --form "fileupload=@my-file.txt;filename=desired-filename.txt" --form param1=value1 --form param2=value2 https://example.com/resource.cgi
Sans données :
curl --data '' https://example.com/resource.cgi
curl -X POST https://example.com/resource.cgi
curl --request POST https://example.com/resource.cgi
Pour plus d'informations, voir le manuel cURL . Le site Tutoriel cURL sur l'émulation d'un navigateur web est utile.
Avec libcurl
utilisez le curl_formadd()
pour construire votre formulaire avant de le soumettre de la manière habituelle. Voir le Documentation de libcurl pour plus d'informations.
Pour les fichiers volumineux, pensez à ajouter des paramètres pour indiquer la progression du téléchargement :
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
http://example.com/resource.cgi
Le site -o output
est nécessaire, sinon, aucune barre de progression n'apparaîtra.
Cela fonctionne également si vous devez mettre à jour une ressource avec un PUT : curl -X PUT ...
J'ai du mal à comprendre... Quand est-ce que je le ferais ? With Fields
quand avec Multipart
et quand Without Data
?
Pour un RESTful HTTP POST contenant du XML :
curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:text/xml"
ou pour JSON, utilisez ceci :
curl -X POST -d @filename.txt http://example.com/path/to/resource --header "Content-Type:application/json"
Cela va lire le contenu du fichier nommé filename.txt
et l'envoyer comme demande de poste.
@tom-wijsman explication : curl -X POST
implique une demande HTTP POST, le -d
paramètre (version longue : --data
) indique à curl que ce qui suit sera des paramètres POST, et @filename
désigne le contenu du fichier filename
comme paramètre. Cette approche fonctionne mieux avec les API HTTP RESTful, comme celles de Twitter, de Facebook, de divers autres services Web, y compris Ruby on Rails, ainsi que les API HTTP de bases de données telles que CouchDB. REST est l'abréviation de Transfert d'état représentationnel
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
est l'exemple trouvé dans le Manuel d'exemple de curl .
Utilisez %26 pour les esperluettes si la méthode ci-dessus ne fonctionne pas :
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
Si vous voulez vous connecter à un site, procédez comme suit :
curl -d "username=admin&password=admin&submit=Login" --dump-header headers http://localhost/Login
curl -L -b headers http://localhost/
La première demande enregistre le cookie de session (qui est fourni lors d'une connexion réussie) dans le fichier "headers". À partir de maintenant, vous pouvez utiliser ce cookie pour vous authentifier dans n'importe quelle partie du site Web à laquelle vous accédez habituellement après vous être connecté avec un navigateur.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.