Я использую завихрение, чтобы заставить http заголовки находить код состояния HTTP и также возвращать ответ. Я получаю http заголовки с командой
curl -I http://localhost
Для получения ответа я использую команду
curl http://localhost
Как только используют флаг-I, я получаю только заголовки, и ответ больше не там. Существует ли способ получить и http ответ и заголовки/код состояния HTTP в в одной команде?
Я смог получить решение путем рассмотрения вихревого документа, который указывает для использования - чтобы вывод получил вывод к stdout.
curl -o - http://localhost
Для получения ответа только с http кодом возврата я мог просто сделать
curl -o /dev/null -s -w "%{http_code}\n" http://localhost
Я использую эту команду для печати кода состояния без любого другого вывода. Кроме того, это будет только выполнять ГЛАВНЫЙ запрос и следовать за перенаправлением (соответственно -I
и -L
).
curl -o -I -L -s -w "%{http_code}" http://localhost
Это делает очень легким проверить код состояния в медицинский сценарий:
sh -c '[ $(curl -o -I -L -s -w "%{http_code}" http://localhost) -eq 200 ]'
подробный режим скажет Вам все
curl -v http://localhost
Я использовал это:
request_cmd="$(curl -i -o - --silent -X GET --header 'Accept: application/json' --header 'Authorization: _your_auth_code==' 'https://example.com')"
, Чтобы заставить состояние HTTP
http_status=$(echo "$request_cmd" | grep HTTP | awk '{print $2}')
echo $http_status
получать орган по ответу я использовал это
output_response=$(echo "$request_cmd" | grep body)
echo $output_response
Я нашел этот вопрос, потому что я хотел И ответ и содержание для добавления некоторой обработки ошибок для пользователя.
можно распечатать код состояния HTTP к станд. и записать содержание в другой файл.
curl -s -o response.txt -w "%{http_code}" http://example.com
Это позволяет нам, Вы используете логику, чтобы решить, стоит ли ответ обработать.
http_response=$(curl -s -o response.txt -w "%{http_code}" http://example.com)
if [ $http_response != "200" ]; then
# handle error
else
echo "Server returned:"
cat response.txt
fi
-i
опция является той, которую Вы хотите:
curl -i http://localhost
-i, - включают, Включают заголовки протокола в вывод (H/F)
, Кроме того, можно использовать подробную опцию:
curl -v http://localhost
-v, - подробный Делают операцию больше болтливый
Для программного использования я использую следующее:
curlwithcode() {
code=0
# Run curl in a separate command, capturing output of -w "%{http_code}" into statuscode
# and sending the content to a file with -o >(cat >/tmp/curl_body)
statuscode=$(curl -w "%{http_code}" \
-o >(cat >/tmp/curl_body) \
"$@"
) || code="$?"
body="$(cat /tmp/curl_body)"
echo "statuscode : $statuscode"
echo "exitcode : $code"
echo "body : $body"
}
curlwithcode https://api.github.com/users/tj
Это показывает следующий вывод:
statuscode : 200
exitcode : 0
body : {
"login": "tj",
"id": 25254,
...
}
Эта команда
curl http://localhost -w ", %{http_code}"
доберется, запятая разделила тело и состояние; можно разделить их для вывода их.
можно изменить разделитель, как Вам нравится.