Sto provando a leggere il corpo di una risposta 400 con la gemma rest-client
. Il problema è che rest-client
risponde a 400 lanciandolo come errore, quindi non riesco a trovare un modo per ottenere il corpo del testo.Leggere il corpo di una risposta 400?
Ecco l'esempio motivante. Considerate questo chiamata all'API grafico di facebook:
JSON.parse(RestClient.get("https://graph.facebook.com/me?fields=id,email,first_name,last_name&access_token=#{access_token}"))
Se il access_token
è scaduto o non valida, facebook fa due cose:
- restituisce una risposta HTTP 400 Richiesta
- Restituisce JSON nella risposta corpo con più informazioni, in questo modo:
{
"error": {
"message": "The access token could not be decrypted",
"type": "OAuthException",
"code": 190
}
}
Poiché la risposta 400 genera un errore, non riesco a capire come ottenere il corpo della risposta. Cioè, ad esempio, se eseguo la richiesta GET sopra in curl o nel mio browser, posso vedere il corpo, ma non riesco a capire come accedervi nel restclient. Ecco un esempio:
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