É possível instruir cURL para suprimir a saída do corpo de resposta?
No meu caso, o corpo da resposta é uma página HTML, que estourou o buffer CLI, tornando difícil encontrar as informações relevantes. Quero examinar as outras partes da saída, como código de resposta HTTP, cabeçalhos, etc - tudo, exceto o HTML real.
-s -o nul
mas na minha máquina com Windowscurl -s -o nul -v http://{internal-host}/{internal-uri}
produz o html inteiro da página - eu tenteicurl -s -o nul -v http://google.com
e suprime a saída conforme o esperado, então não estou entendendo por que isso não funciona no meu site interno-o
especifica apenas um resultado de URLs: se você tiver vários URLs, ele descartará apenas o primeiro :(NUL
e/dev/null
. Usar-sIXGET
é uma opção melhor IMO.Esta é uma maneira de suprimir todas as saídas e cabeçalhos curl, com a opção de ainda mostrar erros se eles ocorrerem. Útil para tarefas cron ou testes automatizados.
Unix
Para suprimir todas as saídas:
Para suprimir a saída, mas ainda mostrar erros, caso ocorram:
janelas
Para suprimir todas as saídas:
Para suprimir a saída, mas ainda mostrar erros, caso ocorram:
Parâmetros explicados
--silent
suprime as estatísticas de download em andamento (mas ainda exibe a saída HTML)--output /dev/null
oculta os--show-error
erros de exibição de saída bem-sucedida , mesmo quando osilent
modo está habilitado--fail
irá gerar um erro se a resposta HTTP for um código de erro (404, 500 etc.) em vez de meramente DNS / Erros de TCP.ATUALIZAÇÃO: percebo que o autor original queria inspecionar os cabeçalhos e o código de resposta de uma solicitação em vez de silenciar tudo . Veja a resposta de samael para detalhes sobre como fazer isso.
fonte
NUL
e/dev/null
. Usar-sIXGET
é uma opção melhor IMO.curl -vo/dev/null
/curl -voNUL
... e eu não sei se existe uma variante portátil disso, hrm ... ;-).curl -Ssfo /dev/null url
. Mas seja legal com os futuros mantenedores.Quando você quiser mostrar cabeçalhos, mas ocultar o corpo da resposta, use:
Eu estava usando
curl -I http://somedomain.com/your/url
apenas para mostrar cabeçalhos de resposta. O problema com isso é que ele faz a solicitação usando oHEAD
método que não é bom quando você quer testar uma chamada de API que responde apenas a umaGET
solicitação.-X GET
É para isso que serve, ele muda a solicitação para aGET
.Então, em resumo:
-s
oculta as barras de progresso da saída (especialmente útil ao canalizar para outro programa)-I
mostra cabeçalhos (mas faz umaHEAD
solicitação)-XGET
converte a solicitação de volta em umaGET
solicitaçãoconsulte: http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/
fonte
curl -i
faz exatamente a mesma coisa.-i
inclui o cabeçalho HTTP na saída, bem como no corpo. Tente.curl -i http://google.com
não é o mesmo quecurl -IXGET http://google.com
curl -I url
é suficiente e tem o mesmo efeito. Eu só precisava verificar se o url respondia. Essa questão também era apenas sobre suprimir o corpo, o queHEAD
funciona bem.