2010-05-21 6 views
25

Existe-t-il un moyen d'utiliser curl pour envoyer une requête POST sans envoyer de données?POST avec curl sans envoyer de données

Nous fixons habituellement comme:

curl --data @C:\mydata.txt http://1.2.3.4/myapi 

Si vous omettez le --data que vous faites une requête GET. Comment pouvez-vous l'omettre et faire encore un POST?

Répondre

43

trouvé au hasard le solution sur un autre poste:

curl -X POST http://example.com

+0

Nice. Je suis dans cette situation aussi, mais c'est un peu bizarre. Je me demande s'il serait plus approprié de changer l'appel à un GET. Je sais que cela a quelques années maintenant, mais aucune idée à ce sujet? –

+7

Dans mon cas, je devais utiliser --data "" sinon j'obtiendrais un 411: curl -X POST --data "" url – unify

+2

@KyleClegg L'appel devrait être un POST s'il est conçu pour changer quelque chose, et pourrait donner un résultat différent chaque fois qu'il est appelé. Ne pas envoyer de données ne signifie pas que cela ne changera rien. Donc, dans ce cas, il ne serait pas approprié de changer l'appel en un GET. –

2

Ceci est un peu un hack, mais vous pouvez toujours fournir un fichier de données vide.

Alternativement

cat /dev/null | curl --data @- http://... 
+0

Droite. Peut également utiliser '--data xxx'. –

0

En cas de libcurl avec PHP:

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); 
1

Une autre option envoie une requête avec corps vide, comme ça:

curl http://example.com -d {}