我使用curl来获取http报头以查找http状态代码并返回响应。我使用命令获取http头信息
curl -I http://localhost
为了得到响应,我使用命令
curl http://localhost
一旦使用了-I标志,我就只得到了头信息,响应就不再存在了。是否有一种方法可以同时获得http响应和头/http状态码在一个命令?
我使用curl来获取http报头以查找http状态代码并返回响应。我使用命令获取http头信息
curl -I http://localhost
为了得到响应,我使用命令
curl http://localhost
一旦使用了-I标志,我就只得到了头信息,响应就不再存在了。是否有一种方法可以同时获得http响应和头/http状态码在一个命令?
当前回答
我用过这个:
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
其他回答
根据我的经验,我们通常这样使用旋度
curl -f http://localhost:1234/foo || exit 1
curl: (22) The requested URL returned error: 400 Bad Request
这样我们就可以在curl失败时使用管道,并且它还显示状态代码。
一个清晰的使用管道读取
function cg(){
curl -I --silent www.google.com | head -n 1 | awk -F' ' '{print $2}'
}
cg
# 200
欢迎在这里使用我的dotfile脚本
解释
——silent:使用管道时不显示进度条 head -n 1:只显示第一行 -F' ':使用分隔符分隔文本 '{print $2}':显示第二列
这对我来说很管用:
curl -Uri 'google.com' | select-object StatusCode
while : ; do curl -sL -w "%{http_code} %{url_effective}\\n" http://host -o /dev/null; done
我可以通过查看curl文档来得到一个解决方案,该文档指定使用-来将输出输出到stdout。
curl -o - -I http://localhost
要用http返回代码获得响应,我可以这样做
curl -o /dev/null -s -w "%{http_code}\n" http://localhost