json - 如何让 cURL 仅输出 HTTP 响应正文(JSON)而不输出其他 header 等

我在 bash 脚本中使用 curl 来获取服务的响应,如下所示,

response=$(curl -isb -H "Accept: application/json" "http://host:8080/some/resource")

服务响应是 json 类型,在浏览器上我可以完美响应。
然而 curl 响应还有其他不需要的东西(例如 set-cookie,在这种情况下是 content-length header ),有时实际响应会被吃掉。

这是 echo $response >

的输出
 Set-Cookie: rack.session=BAh7CEkiD3Nlc3Npb25faWQGOgZFVEkiRWJlY2JiOTE2M2Q1ZWI4NThjMDdi%0AYjRiOWRjMGMxMGEwYTBkMjE3NmJhZDVjYzY4YjY4ZTlmMTE2ZGVkYWE3MTMG%0AOwBGS
SIJY3NyZgY7AEZJIiVhZmQ2MmUyZGMxMzFmOGEwMjg3NDlhNWM3YmVm%0AN2FjNwY7AEZJIg10cmFja2luZwY7AEZ7B0kiFEhUVFBfVVNFUl9BR0VOVAY7%0AAFRJIi00MTc0OGM2MWNkMzljZTYxNzY3ZjU0
Y2I5OTdiYWRkN2MyNTBkYmU4%0ABjsARkkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsAVEkiLWRhMzlhM2VlNWU2%0AYjRiMGQzMjU1YmZlZjk1NjAxODkwYWZkODA3MDkGOwBG%0A--ee97a62095e7d42129
 tontent-Length: 354c8; path=/; HttpOnly

这打破了我的响应解析逻辑。
我看到这种情况间歇性地发生,这很奇怪。

有没有办法从 cURL 输出中获取 "only" json 响应?
我浏览了 curl 文档,但看不到任何东西/或者我可能错过了。

最佳答案

您正在指定 -i 选项:

-i, --include

(HTTP) Include the HTTP-header in the output. The HTTP-header includes things like server-name, date of the document, HTTP-version and more...

只需从命令行中删除该选项:

response=$(curl -sb -H "Accept: application/json" "http://host:8080/some/resource")

https://stackoverflow.com/questions/24254064/

相关文章:

python - 使用常规编码器使对象 JSON 可序列化

c# - 将 XML 转换为动态 C# 对象

json - REST:使用一个请求更新多个资源 - 它是标准的还是应该避免的?

javascript - 对象和哈希之间的区别?

java - 与 Jackson 映射时将默认值设置为空字段

json - AngularJS - 服务器端验证和客户端表单

java - 由于输入结束 jackson 解析器,没有要映射的内容

ruby-on-rails - ActiveRecord 使用 JSON 而不是 YAML 进行序列

java - 忽略 Jackson 序列化的特定字段

c# - 将 JSON 数据发布到 ASP.NET MVC