web-dev-qa-db-fra.com

cURL supprime le corps de réponse

Est-il possible de demander à cURL de supprimer la sortie du corps de la réponse?

Dans mon cas, le corps de la réponse est une page HTML, qui déborde du tampon CLI, ce qui rend difficile la recherche des informations pertinentes. Je souhaite examiner les autres parties de la sortie, telles que le code de réponse HTTP, les en-têtes, le fichier e.t.c. - tout sauf le HTML actuel.

75
BaltoStar

Vous pouvez utiliser le -o commutateur et null pseudo-fichier:

Unix

curl -s -o /dev/null -v http://google.com

Les fenêtres

curl -s -o nul -v http://google.com
89
Gilles Quenot

Voici un moyen de supprimer toutes les sorties curl et les en-têtes, avec la possibilité de toujours afficher les erreurs si elles se produisent. Utile pour les tâches cron ou les tests automatisés.

Unix

Pour supprimer toutes les sorties:

curl --silent --output /dev/null http://example.com

Pour supprimer la sortie mais toujours afficher les erreurs si elles se produisent:

curl --silent --output /dev/null --show-error --fail http://example.com

Les fenêtres

Pour supprimer toutes les sorties:

curl --silent --output nul http://example.com

Pour supprimer la sortie mais toujours afficher les erreurs si elles se produisent:

curl --silent --output nul --show-error --fail http://example.com

Paramètres expliqués

--silent supprime les statistiques de téléchargement en cours (mais affiche toujours la sortie HTML)
--output /dev/null cache la sortie réussie
--show-error affiche les erreurs, même lorsque le mode silent est activé
--fail générera une erreur si la réponse HTTP est un code d'erreur (404, 500, etc.) au lieu de simples erreurs DNS/TCP.


UPDATE: Je réalise que l'auteur original voulait inspecter les en-têtes et le code de réponse d'une demande plutôt que de réduire au silence tout. Voir réponse de samael pour des détails sur la façon de le faire.

21
Simon East

Lorsque vous souhaitez afficher les en-têtes tout en masquant le corps de la réponse, vous devez utiliser:

curl -sIXGET http://somedomain.com/your/url

J'avais utilisé curl -I http://somedomain.com/your/url pour afficher uniquement les en-têtes de réponse. Le problème avec cela, c’est que la requête utilise la méthode HEAD , ce qui n’est pas utile lorsque vous souhaitez tester un appel d’API ne répondant qu’à un GET demande. C'est ce que le -X GET est pour, il change la demande en un GET.

Donc, en résumé:

-s masque les barres de progression de la sortie (particulièrement utile lors du transfert vers un autre programme)
-I montre les en-têtes (mais fait une requête HEAD)
-XGET reconvertit la requête en requête GET

voir: http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/

12
samael