Réponses:
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 didacticiel cURL sur l’émulation d’un navigateur Web est utile.
Avec libcurl, utilisez la curl_formadd()
fonction pour construire votre formulaire avant de le soumettre de la manière habituelle. Consultez la documentation de libcurl pour plus d'informations.
Pour les fichiers volumineux, pensez à ajouter des paramètres pour afficher la progression du téléchargement:
curl --tr-encoding -X POST -v -# -o output -T filename.dat \
http://example.com/resource.cgi
Le -o output
est requis, sinon aucune barre de progression n'apparaîtra.
--data-urlencode
(pas de tiret), dans les versions récentes au moins
With Fields
, quand Multipart
et quand Without Data
?
--data
vous pouvez utiliser -d
.
Pour un POST HTTP RESTful 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 lira le contenu du fichier nommé filename.txt
et l'enverra en tant que demande de publication.
curl -X POST
implique une demande HTTP POST, le -d
paramètre (version longue :) --data
indique à curl que ce qui suit sera un paramètre POST et @filename
désigne le contenu du fichier filename
comme paramètre. Cette approche fonctionne mieux avec les API HTTP RESTful que l'on trouve sur Twitter, Facebook, divers autres services Web, notamment Ruby on Rails, ainsi que les API HTTP de bases de données telles que CouchDB. REST est synonyme de transfert d'état représentationnel
-X POST
puisque cela est impliqué par -d
.
Données de stdin avec -d @-
Exemple:
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
Sortie:
<p>Hello <strong>world</strong>!</p>
curl -d "name=Rafael%20Sagula&phone=3320780" http://www.where.com/guest.cgi
est l'exemple trouvé dans le manuel d'exemple Curl .
Utilisez% 26 pour les esperluettes si cela ne fonctionne pas:
curl -d "name=Rafael%20Sagula%26phone=3320780" http://www.where.com/guest.cgi
Si vous souhaitez 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 (fourni lors d'une connexion réussie) dans le fichier "en-têtes". À partir de maintenant, vous pouvez utiliser ce cookie pour vous authentifier auprès de toute partie du site Web à laquelle vous accédez habituellement après votre connexion à l'aide d'un navigateur.
curl -v --data-ascii var=value http://example.com
et il y a beaucoup plus d'options, vérifiez curl --help
pour plus d'informations.
Si vous êtes paresseux, vous pouvez demander à Google Chrome de faire tout le travail à votre place.
Chrome copiera toutes les données de la demande dans la syntaxe cURL.
Chrome utilise --data 'param1=hello¶m2=world'
ce que vous pouvez rendre plus lisible en utilisant un seul paramètre -d
ou -F
par paramètre, en fonction du type de demande POST que vous souhaitez envoyer, qui peut être indifféremment application/x-www-form-urlencoded
ou multipart/form-data
correctement.
Ce sera POST-ed comme application/x-www-form-urlencoded
( utilisé pour la majorité des formulaires qui ne contiennent pas de fichiers téléchargés ):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-d param1=hello \
-d name=dinsdale
Pour une multipart/form-data
utilisation POST -F
( généralement utilisée avec des formulaires contenant des téléchargements de fichiers ou pour lesquels l'ordre des champs est important, ou lorsque plusieurs champs du même nom sont obligatoires ):
curl http://httpbin.org/post \
-H "User-Agent: Mozilla/2.2" \
-F param1=hello \
-F name=dinsdale \
-F name=piranha
L'en- User-Agent
tête n'est normalement pas nécessaire, mais je l'ai jeté au cas où. Vous pouvez éviter de définir l'agent utilisateur à chaque requête en créant le ~/.curlrc
fichier contenant par exempleUser-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data