응답과 함께 http 상태 코드를 반환하는 Curl
curl을 사용하여 http 헤더를 가져와 http 상태 코드를 찾고 응답도 반환합니다. 명령으로 http 헤더를 얻습니다.
curl -I http://localhost
응답을 얻으려면 다음 명령을 사용합니다.
curl http://localhost
-I 플래그를 사용하자마자 헤더 만 가져오고 응답은 더 이상 존재하지 않습니다. 하나의 명령에서 http 응답과 헤더 / http 상태 코드를 모두 얻는 방법이 있습니까?
출력을 표준 출력으로 가져 오기 위해 사용하도록 지정하는 curl 문서를보고 솔루션을 얻을 수있었습니다.
curl -o - http://localhost
http 반환 코드만으로 응답을 얻으려면 다음을 수행하십시오.
curl -o /dev/null -s -w "%{http_code}\n" http://localhost
이 명령을 사용하여 다른 출력없이 상태 코드를 인쇄합니다. 또한 HEAD 요청 만 수행하고 리디렉션 (각각 -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
-i
옵션은 당신이 원하는 것을 하나입니다 :
curl -i http://localhost
-i, --include 출력에 프로토콜 헤더 포함 (H / F)
또는 verbose 옵션을 사용할 수 있습니다.
curl -v http://localhost
-v, --verbose 작업을 더 수다하게 만듭니다
사용자에 대한 오류 처리를 추가하기 위해 응답과 내용을 모두 원했기 때문에이 질문을 찾았습니다.
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
프로그래밍 방식으로 사용하려면 다음을 사용합니다.
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}"
쉼표로 구분 된 본문과 상태를 가져옵니다. 당신은 그들을 분리하기 위해 그들을 나눌 수 있습니다.
원하는대로 구분 기호를 변경할 수 있습니다.
참고URL : https://stackoverflow.com/questions/38906626/curl-to-return-http-status-code-along-with-the-response
'IT Share you' 카테고리의 다른 글
Telnet을 사용하여 HTTP 요청을 보내는 방법 (0) | 2020.12.14 |
---|---|
ng-pattern을 사용하여 angularjs에서 이메일 ID를 확인하는 방법 (0) | 2020.12.14 |
sqlite에 대한 좋은 OO C ++ 래퍼는 무엇입니까 (0) | 2020.12.14 |
Python의 목록에서 일부 값의 첫 번째와 마지막 색인 찾기 (0) | 2020.12.14 |
jQuery를 설치 하시겠습니까? (0) | 2020.12.14 |