2016-08-11 21 views
14

Używam curl, aby uzyskać nagłówki http, aby znaleźć kod stanu http, a także odpowiedź zwrotną. Uzyskać nagłówki HTTP z poleceniemZwinąć, aby przywrócić kod stanu http wraz z odpowiedzią

curl -I http://localhost 

Aby uzyskać odpowiedź, używam polecenia

curl http://localhost 

Tak szybko, jak korzystać z flagą -I, mam tylko nagłówki i odpowiedź nie jest już tam. Czy istnieje sposób na uzyskanie zarówno odpowiedzi http, jak i kodu statusu nagłówków/http w jednym poleceniu?

Odpowiedz

17

Udało mi się uzyskać rozwiązanie, patrząc na dokument dociągający, który określa użycie - dla wyjścia, aby uzyskać wyjście na standardowe wyjście.

curl -o - http://localhost 

Aby uzyskać odpowiedź tylko z kodem powrotu HTTP, może po prostu zrobić

curl -o -I -s -w "%{http_code}\n" http://localhost 
+2

lub chcesz użyć '-i'. A może '-v', jeśli lubisz dodatkowe informacje. –

+1

Dzięki @DanielStenberg. Przyjęta odpowiedź nie zadziałała, po prostu użyłem -i wykonałem pracę. –

+0

brakuje twojego drugiego polecenia -I @RandominstanceOfLivingThing, chyba że jest to celowo pusta opcja? Nie działa dla mnie bez niego. – mdo123

7

Użyłem tego:

request_cmd="$(curl -i -o - --silent -X GET --header 'Accept: application/json' --header 'Authorization: _your_auth_code==' 'https://example.com')" 

Aby uzyskać status HTTP

http_status=$(echo "$request_cmd" | grep HTTP | awk '{print $2}') 
    echo $http_status 

Aby uzyskać odpowiedź bod y Użyłem tej

output_response=$(echo "$request_cmd" | grep body) 
    echo $output_response 
11
curl -o -I -L -s -w "%{http_code}\n" http://localhost 
+2

Ta odpowiedź została już udzielona rok temu. Jaką nową wartość przynosi Twoja odpowiedź? Proszę również o wyjaśnienie swojej odpowiedzi. –

+0

dziękuję drogi przyjacielu! – Ilja

+2

@MaciejJureczko - Wartość jest prosta. W przypadku skryptów ta odpowiedź jest najlepsza spośród wszystkich pozostałych odpowiedzi, ponieważ daje jeden kod statusu zamiast wielu linii śmieci wraz ze wspomnianym kodem statusu. – aggregate1166877