Как получить код состояния HTTP с помощью curl post

#curl

#curl

Вопрос:

Я использую curl для GET в командной строке Linux, чтобы получить код ответа http. Тела ответов печатаются в соответствии со стандартом out, что нормально, но я не вижу никакого решения, как заставить curl for POST печатать код состояния HTTP (200, 404, 403 и т.д.). Возможно ли это?

Ответ №1:

Чтобы получить только http_code , вы могли бы попробовать:

 curl -s -o /dev/null --head -w "%{http_code}" -X POST "https://httpbin.org/post"
  

вы можете прочитать / запомнить это как:

  • -s Беззвучный режим
  • -o Записать выходные данные в /dev /null
  • --head Получить только заголовки
  • -w "%{http_code}" запишите код состояния HTTP

Чтобы получить все заголовки из вашего запроса, попробуйте:

 curl -I -X POST "https://httpbin.org/post"
  

Он вернет что-то вроде:

 HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: *
Content-Type: application/json
Date: Thu, 28 Mar 2019 20:12:01 GMT
Server: nginx
Content-Length: 294
Connection: keep-alive
  

Комментарии:

1. Как использовать эту команду в командной строке Windows я попробовал команду curl -I -s -w %{http_code} server:8080/page/ , и она выдает curl: no URL specified!

2. Я предполагаю, что вам нужно указать протокол в целевом URL-адресе следующим образом: curl -I -s -w%{http_code} server: 8080 / page

Ответ №2:

  curl -X POST --write-out %{http_code} --silent --output /dev/null --data  "{your_json_input}}" -H 'Content-Type:application/json' http://your_url
  

Ответ №3:

Более новые версии curl имеют --fail-with-body то же возвращаемое значение, что и --fail , но все еще печатают тело ответа.