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 veux examiner les autres parties de la sortie telles que le code de réponse HTTP, les en-têtes, etc. - tout sauf le HTML réel.
-s -o nul
j'ai essayé, mais sur ma machine Windows, lacurl -s -o nul -v http://{internal-host}/{internal-uri}
page est sortie en html - j'ai essayécurl -s -o nul -v http://google.com
et cela supprime la sortie comme prévu, donc je ne comprends pas pourquoi cela ne fonctionne pas pour mon site interne-o
ne spécifie qu'une sortie URL: si vous avez plusieurs URL, il ne supprimera que la première :(NUL
et/dev/null
. L'utilisation-sIXGET
est une meilleure option IMO.Voici un moyen de supprimer toutes les sorties et en-têtes curl, avec la possibilité d'afficher toujours les erreurs si elles se produisent. Utile pour les tâches cron ou les tests automatisés.
Unix
Pour supprimer toutes les sorties:
Pour supprimer la sortie tout en affichant les erreurs si elles se produisent:
les fenêtres
Pour supprimer toutes les sorties:
Pour supprimer la sortie tout en affichant les erreurs si elles se produisent:
Paramètres expliqués
--silent
supprime les statistiques de téléchargement en cours (mais affichera toujours la sortie HTML)--output /dev/null
masque la sortie réussie--show-error
montre les erreurs, même lorsque lesilent
mode est activé--fail
, une erreur sera générée si la réponse HTTP est un code d'erreur (404, 500, etc.) au lieu de simplement DNS / Erreurs TCP.MISE À JOUR: Je me rends compte que l'auteur original voulait inspecter les en-têtes et le code de réponse d'une requête plutôt que de tout mettre au silence . Voir la réponse de Samael pour plus de détails sur la façon de procéder.
la source
NUL
et/dev/null
. L'utilisation-sIXGET
est une meilleure option IMO.curl -vo/dev/null
/curl -voNUL
… et je ne sais pas s'il existe une variante portable de ça, hrm… ;-).curl -Ssfo /dev/null url
. Mais soyez gentil avec les futurs responsables.Lorsque vous souhaitez afficher les en-têtes mais masquer le corps de la réponse, vous souhaiterez utiliser:
J'avais utilisé
curl -I http://somedomain.com/your/url
juste pour afficher les en-têtes de réponse. Le problème avec cela est cependant qu'il fait la demande en utilisant laHEAD
méthode qui n'est pas bonne lorsque vous voulez tester un appel API qui ne répond qu'à uneGET
demande. C'est à cela que-X GET
sert le, il change la demande en un fichierGET
.Donc, en résumé:
-s
masque les barres de progression de la sortie (particulièrement utile lors du transfert vers un autre programme)-I
affiche les en-têtes (mais fait uneHEAD
requête)-XGET
convertit la requête enGET
requêtevoir: http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/
la source
curl -i
fait exactement la même chose.-i
inclut l'en-tête HTTP dans la sortie ainsi que le corps. Essayez-le.curl -i http://google.com
n'est pas le même quecurl -IXGET http://google.com
curl -I url
est suffisant et a le même effet. J'avais juste besoin de vérifier si l'URL était réactive. Cette question aussi était simplement de supprimer le corps, ce quiHEAD
fonctionne bien.