¿Es posible instruir a cURL para suprimir la salida del cuerpo de respuesta?
En mi caso, el cuerpo de la respuesta es una página HTML, que desborda el búfer CLI, lo que dificulta encontrar la información relevante. Quiero examinar las otras partes de la salida, como el código de respuesta HTTP, los encabezados, etc., todo excepto el HTML real.
-s -o nul
pero en mi máquina de Windows salecurl -s -o nul -v http://{internal-host}/{internal-uri}
todo el html de la página; lo intentécurl -s -o nul -v http://google.com
y suprime la salida como se esperaba, así que no entiendo por qué esto no funciona para mi sitio interno-o
solo especifica una salida de URL: si tiene varias URL, solo descartará la primera :(NUL
y/dev/null
. Usar-sIXGET
es una mejor opción en mi opinión.Esta es una forma de suprimir todos los encabezados y la salida curl, con la opción de seguir mostrando errores si ocurren. Útil para trabajos cron o pruebas automatizadas.
Unix
Para suprimir toda la salida:
Para suprimir la salida pero aún mostrar errores si ocurren:
Ventanas
Para suprimir toda la salida:
Para suprimir la salida pero aún mostrar errores si ocurren:
Parámetros explicados
--silent
suprime las estadísticas de descarga en curso (pero seguirá mostrando la salida HTML)--output /dev/null
oculta la salida correcta--show-error
muestra errores, incluso cuando elsilent
modo está habilitado--fail
generará un error si la respuesta HTTP es un código de error (404, 500, etc.) en lugar de simplemente DNS / Errores de TCP.ACTUALIZACIÓN: Me doy cuenta de que el autor original quería inspeccionar los encabezados y el código de respuesta de una solicitud en lugar de silenciar todo . Consulte la respuesta de samael para obtener detalles sobre cómo hacer eso.
fuente
NUL
y/dev/null
. Usar-sIXGET
es una mejor opción en mi opinión.curl -vo/dev/null
/curl -voNUL
… y no sé si hay una variante portátil de eso, hrm… ;-).curl -Ssfo /dev/null url
. Pero sea amable con los futuros mantenedores.Cuando desee mostrar encabezados pero ocultar el cuerpo de la respuesta, querrá usar:
Lo había estado usando
curl -I http://somedomain.com/your/url
solo para mostrar encabezados de respuesta. Sin embargo, el problema con eso es que realiza la solicitud utilizando elHEAD
método, lo cual no es bueno cuando desea probar una llamada API que solo responde a unaGET
solicitud. Para esto es-X GET
, cambia la solicitud aGET
.Entonces, en resumen:
-s
oculta las barras de progreso de la salida (especialmente útil cuando se conecta a otro programa)-I
muestra los encabezados (pero hace unaHEAD
solicitud)-XGET
convierte la solicitud de nuevo en unaGET
solicitudver: http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/
fuente
curl -i
hace exactamente lo mismo.-i
incluye el encabezado HTTP en la salida y en el cuerpo. Intentalo.curl -i http://google.com
no es lo mismo quecurl -IXGET http://google.com
curl -I url
es suficiente y tiene el mismo efecto. Solo necesitaba verificar si la URL respondía. Esta pregunta también trataba simplemente de suprimir el cuerpo, lo queHEAD
hace bien.