Ich versuche, den Körper einer 400 Antwort mit dem rest-client
Juwel zu lesen. Das Problem ist, dass rest-client
auf 400 reagiert, indem es es als ein Fehler wirft, so kann ich keine Möglichkeit herausfinden, den Text zu erhalten.Den Körper einer 400 Antwort lesen?
Hier ist das motivierende Beispiel. Betrachten wir diesen Aufruf an die Facebook Graph API:
JSON.parse(RestClient.get("https://graph.facebook.com/me?fields=id,email,first_name,last_name&access_token=#{access_token}"))
Wenn die access_token
abgelaufen oder ungültig ist, Facebook macht zwei Dinge:
- Gibt eine 400 Bad Request HTTP-Antwort
- Returns JSON in der Antwort Körper mit mehr Informationen, wie folgt aus:
{
"error": {
"message": "The access token could not be decrypted",
"type": "OAuthException",
"code": 190
}
}
Weil 400 Antwort einen Fehler auslöst, kann ich nicht herausfinden, wie man den Körper der Antwort erhält. Das heißt, wenn ich zum Beispiel die GET-Anfrage oben in curl oder in meinem Browser abspiele, kann ich den Body sehen, aber ich kann nicht herausfinden, wie ich ihn im Restclient aufrufen kann. Hier ein Beispiel:
begin
fb_response = JSON.parse(RestClient.get("https://graph.facebook.com/me?fields=id,email,first_name,last_name&access_token=#{access_token}"))
rescue => e
# 400 response puts me here
# How can I get the body of the above response now, so I can get details on the error?
# eg, was it an expired token? A malformed token? Something else?
end