Apakah mungkin menginstruksikan cURL untuk menekan output tubuh respons?
Dalam kasus saya, isi respons adalah halaman HTML, yang meluap dari buffer CLI, sehingga sulit untuk menemukan informasi yang relevan. Saya ingin memeriksa bagian lain dari output seperti kode respons HTTP, header, dll - semuanya kecuali HTML yang sebenarnya.
-s -o nul
tetapi padacurl -s -o nul -v http://{internal-host}/{internal-uri}
seluruh html halaman output mesin windows saya - saya mencobacurl -s -o nul -v http://google.com
dan itu menekan output seperti yang diharapkan, jadi saya tidak mengerti mengapa ini tidak berfungsi untuk situs internal saya-o
hanya menentukan satu keluaran URL: jika Anda memiliki banyak url, itu hanya akan membuang yang pertama :(NUL
dan/dev/null
. Menggunakan-sIXGET
adalah IMO opsi yang lebih baik.Berikut cara untuk menyembunyikan semua output dan header curl, dengan opsi untuk tetap menampilkan error jika terjadi. Berguna untuk pekerjaan cron atau pengujian otomatis.
Unix
Untuk menekan semua keluaran:
Untuk menyembunyikan keluaran tetapi masih menunjukkan kesalahan jika terjadi:
Windows
Untuk menekan semua keluaran:
Untuk menyembunyikan keluaran tetapi masih menunjukkan kesalahan jika terjadi:
Parameter Dijelaskan
--silent
menyembunyikan statistik unduhan-dalam-proses (tetapi masih akan menampilkan output HTML)--output /dev/null
menyembunyikan output yang berhasil--show-error
menunjukkan kesalahan, bahkan ketikasilent
mode diaktifkan--fail
akan menimbulkan kesalahan jika respons HTTP adalah kode kesalahan (404, 500 dll.), bukan hanya DNS / Kesalahan TCP.PEMBARUAN: Saya menyadari penulis asli ingin memeriksa tajuk dan kode respons permintaan daripada membungkam semuanya . Lihat jawaban samael untuk detil bagaimana melakukan itu.
sumber
NUL
dan/dev/null
. Menggunakan-sIXGET
adalah IMO opsi yang lebih baik.curl -vo/dev/null
/curl -voNUL
… dan saya tidak tahu apakah ada varian portabel dari itu, hrm… ;-).curl -Ssfo /dev/null url
. Tapi bersikaplah baik kepada pengelola masa depan.Jika Anda ingin menampilkan header tetapi menyembunyikan isi respons, Anda dapat menggunakan:
Saya telah menggunakan
curl -I http://somedomain.com/your/url
hanya untuk menampilkan header respon. Masalah dengan itu adalah bahwa itu membuat permintaan menggunakanHEAD
metode yang tidak baik ketika Anda ingin menguji panggilan API yang hanya menanggapiGET
permintaan. Untuk apa-X GET
, ini mengubah permintaan menjadiGET
.Jadi, ringkasannya:
-s
menyembunyikan bilah kemajuan dari keluaran (terutama berguna saat menyalurkan ke program lain)-I
menunjukkan tajuk (tetapi membuatHEAD
permintaan)-XGET
mengubah permintaan kembali menjadiGET
permintaanlihat: http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/
sumber
curl -i
melakukan hal yang persis sama.-i
termasuk HTTP-header dalam keluaran serta isi. Cobalah.curl -i http://google.com
tidak sama dengancurl -IXGET http://google.com
curl -I url
sudah cukup dan memiliki efek yang sama. Saya hanya perlu memeriksa apakah url responsif. Pertanyaan ini juga hanya tentang menekan tubuh, yang berhasil denganHEAD
baik.