Ich verwende Curl in einem Bash-Skript, um die Antwort eines Dienstes wie folgt abzurufen:
response=$(curl -isb -H "Accept: application/json" "http://host:8080/some/resource")
Die Service-Antwort ist vom Typ JSON und im Browser konnte ich eine sehr gute Antwort geben.
Die Curl-Antwort hat jedoch andere unerwünschte Dinge (wie z. B. Set-Cookie, Header mit Inhaltslänge in diesem Fall), und manchmal wird die tatsächliche Antwort aufgefressen.
Hier ist die Ausgabe von echo $response
>
Set-Cookie: rack.session=BAh7CEkiD3Nlc3Npb25faWQGOgZFVEkiRWJlY2JiOTE2M2Q1ZWI4NThjMDdi%0AYjRiOWRjMGMxMGEwYTBkMjE3NmJhZDVjYzY4YjY4ZTlmMTE2ZGVkYWE3MTMG%0AOwBGS
SIJY3NyZgY7AEZJIiVhZmQ2MmUyZGMxMzFmOGEwMjg3NDlhNWM3YmVm%0AN2FjNwY7AEZJIg10cmFja2luZwY7AEZ7B0kiFEhUVFBfVVNFUl9BR0VOVAY7%0AAFRJIi00MTc0OGM2MWNkMzljZTYxNzY3ZjU0
Y2I5OTdiYWRkN2MyNTBkYmU4%0ABjsARkkiGUhUVFBfQUNDRVBUX0xBTkdVQUdFBjsAVEkiLWRhMzlhM2VlNWU2%0AYjRiMGQzMjU1YmZlZjk1NjAxODkwYWZkODA3MDkGOwBG%0A--ee97a62095e7d42129
tontent-Length: 354c8; path=/; HttpOnly
Dies bricht meine Antwort-Parsing-Logik.
Ich habe gesehen, dass dies zeitweise passiert, was seltsam ist.
Gibt es eine Möglichkeit, "nur" eine JSON-Antwort von der Curl-Ausgabe zu erhalten?
Ich habe die Curl-Dokumentation durchgesehen, konnte aber nichts sehen / oder ich hätte es übersehen können.
Schätzen Sie jede Hilfe! Danke
#!/bin/bash req=$(curl -s -X GET http://host:8080/some/resource -H "Accept: application/json") 2>&1 echo "${req}"
quelle