我在 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/