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:
@ tom-wijsman explication: curl -X POSTimplique une demande HTTP POST, le -dparamètre (version longue :) --dataindique à curl que ce qui suit sera un paramètre POST et @filenamedésigne le contenu du fichier filenamecomme 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
soundmonster
1
Comment pouvons-nous voir la réponse XML non pas sur une ligne mais formatée?
Vitaly Zdanevich
6
Je pense que vous pouvez laisser de côté -X POSTpuisque cela est impliqué par -d.
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.
Si vous êtes paresseux, vous pouvez demander à Google Chrome de faire tout le travail à votre place.
Cliquez avec le bouton droit sur le formulaire que vous souhaitez soumettre et sélectionnez Inspecter . Cela ouvrira le panneau DevTools.
Sélectionnez l' onglet Réseau dans devtools et cochez la case Conserver le journal .
Soumettez le formulaire et localisez l'entrée avec la méthode POST (cliquez avec le bouton droit de la souris sur l'en-tête d'une colonne et assurez-vous que la méthode est cochée).
Cliquez avec le bouton droit sur la ligne avec POST, puis sélectionnez Copier > Copier en tant que cURL .
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 -dou -Fpar paramètre, en fonction du type de demande POST que vous souhaitez envoyer, qui peut être indifféremment application/x-www-form-urlencodedou multipart/form-datacorrectement.
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 ):
Pour une multipart/form-datautilisation 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 ):
L'en- User-Agenttê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 ~/.curlrcfichier contenant par exempleUser-Agent: "Mozilla/2.2"
curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/data
Réponses:
Avec des champs:
Avec des champs spécifiés individuellement:
Multipart:
Multipart avec des champs et un nom de fichier:
Sans données:
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:
Le
-o output
est requis, sinon aucune barre de progression n'apparaîtra.la source
--data-urlencode
(pas de tiret), dans les versions récentes au moinsWith Fields
, quandMultipart
et quandWithout Data
?--data
vous pouvez utiliser-d
.Pour un POST HTTP RESTful contenant du XML:
ou pour JSON, utilisez ceci:
Cela lira le contenu du fichier nommé
filename.txt
et l'enverra en tant que demande de publication.la source
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 fichierfilename
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:
Sortie:
la source
est l'exemple trouvé dans le manuel d'exemple Curl .
Utilisez% 26 pour les esperluettes si cela ne fonctionne pas:
la source
Si vous souhaitez vous connecter à un site, procédez comme suit:
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.
la source
et il y a beaucoup plus d'options, vérifiez
curl --help
pour plus d'informations.la source
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éremmentapplication/x-www-form-urlencoded
oumultipart/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 ):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 ):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"
la source