cURL发布请求:获取响应和状态代码

时间:2015-03-24 21:52:04

标签: curl

我使用以下方式发出cURL请求

PATCH=$(curl -i -F file=@$FILE -F path="${STORAGE_PATH}" -F name="${NAME}" -F description="${DESC}" "${SERVER}/api/patches")

如果响应通过并且数据是属性格式化的,那么PATCH将是响应的JSON。

我也想同时获取HTTP响应代码(如200,422),因此我可以验证该过程是否已经完成。

我该怎么做?我只想得到一个数字(如200)。

2 个答案:

答案 0 :(得分:3)

我用这篇文章解决了我的问题,并认为我会分享我的结果。我的目标是创建一个脚本,以确保我的accesstoken端点正常运行。因此,我必须进行POST调用并提取响应代码,这是我的最终结果:

status=$(curl -w "%{http_code}\\n" -H "Accept:application/json" -H "Content-Type:application/x-www-form-urlencoded" --data "client_id=blah&client_secret=blah&grant_type=password&user_name=user&password=pass" https://api.company.com/v1/accessToken -s -o /dev/null)

说明

  • status=$({curlRequest})将输出存储到bash变量中
  • -w将从响应中提取状态代码
  • -H配置我的HTTP标头请求
  • --data设置我要发布的有效负载数据(此标志还会自动将请求设置为POST
  • -s将使请求的进度计静音
  • -o,这将提取响应正文并将其放入文件中。通过将值设置为/dev/null,输出将被丢弃

如果您只需要响应代码,则此处的键值为-w-o。删除-o标志以保留响应正文。

答案 1 :(得分:1)

您可以使用:

PATCH=$(curl -L -w "%{http_code} %{url_effective}\\n" -X POST -d @filename.txt ${server}/api/patches --header "Content-Type:application/json")

它将为您提供响应代码和正文。