Можно ли указать cURL подавить вывод тела ответа?
В моем случае тело ответа - это HTML-страница, которая переполняет буфер CLI, что затрудняет поиск соответствующей информации. Я хочу изучить другие части вывода, такие как код ответа HTTP, заголовки и т. Д. - все, кроме фактического HTML.
-s -o nul
но на моем компьютере с Windows выводитсяcurl -s -o nul -v http://{internal-host}/{internal-uri}
весь html страницы - я пытался,curl -s -o nul -v http://google.com
и он подавляет вывод, как ожидалось, поэтому я не понимаю, почему это не работает для моего внутреннего сайта-o
указывает только один вывод URL: если у вас несколько URL, будетNUL
и/dev/null
. Использование-sIXGET
- лучший вариант ИМО.Вот способ подавить весь вывод curl и заголовки с возможностью отображения ошибок в случае их возникновения. Полезно для задач cron или автоматического тестирования.
Unix
Чтобы подавить весь вывод:
Чтобы подавить вывод, но по-прежнему отображать ошибки, если они возникают:
Windows
Чтобы подавить весь вывод:
Чтобы подавить вывод, но по-прежнему отображать ошибки, если они возникают:
Объяснение параметров
--silent
подавляет статистику незавершенной загрузки (но по-прежнему отображает вывод HTML)--output /dev/null
скрывает успешный вывод--show-error
показывает ошибки, даже еслиsilent
режим включен--fail
, вызовет ошибку, если ответ HTTP представляет собой код ошибки (404, 500 и т. д.), а не просто DNS / Ошибки TCP.ОБНОВЛЕНИЕ: я понимаю, что первоначальный автор хотел проверить заголовки и код ответа на запрос, а не все заглушать . См . Ответ Самаэля, чтобы узнать, как это сделать.
источник
NUL
и/dev/null
. Использование-sIXGET
- лучший вариант ИМО.curl -vo/dev/null
/curl -voNUL
… и я не знаю, есть ли его переносимый вариант, хм… ;-).curl -Ssfo /dev/null url
. Но будьте добры к будущим сопровождающим.Если вы хотите показать заголовки, но скрыть тело ответа, вы захотите использовать:
Я использовал
curl -I http://somedomain.com/your/url
только для отображения заголовков ответов. Проблема в том, что он делает запрос с использованиемHEAD
метода, который не подходит, если вы хотите протестировать вызов API, который отвечает только наGET
запрос. Это то,-X GET
для чего он меняет запрос наGET
.Итак, в итоге:
-s
скрывает индикаторы выполнения из вывода (особенно полезно при подключении к другой программе)-I
показывает заголовки (но делаетHEAD
запрос)-XGET
преобразует запрос обратно вGET
запроссм .: http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/
источник
curl -i
делает то же самое.-i
включает HTTP-заголовок в вывод, а также тело. Попытайся.curl -i http://google.com
не то же самое, чтоcurl -IXGET http://google.com
curl -I url
достаточно и имеет тот же эффект. Мне просто нужно было проверить, реагирует ли URL-адрес. Этот вопрос тоже был просто о подавлении тела, чтоHEAD
хорошо.