2015-03-03 8 views
6

Derzeit bekomme ich HttpResponseException, die nur StatusCode hat. Wie kann ich eine vollständige Antwort erhalten?So erhalten Sie vollständige Antwort für Groovy RestClient fehlgeschlagen Antwort

Hier ist der Code Ich verwende

restClient = new RESTClient("http://${Server}") 
try { 
    HttpResponseDecorator resp = restClient.post(path,body,requestContentType)  
     as HttpResponseDecorator 
    return JSONObject.fromObject(resp.getData()).get("topKey",""); 
    } 
catch (HttpResponseException e) { 
      error(e.toString()) 
    } 

Und es nur Ausgang dieses:

[oaf.error] groovyx.net.http.HttpResponseException: Internal Server Error 

Antwort

4

Fügen Sie benutzerdefinierte fehlgeschlagen Antworthandler:

 restClient = new RESTClient("http://${Server}") 
     restClient.handler.failure = { resp, data -> 
      resp.setData(data) 
      String headers = "" 
      resp.headers.each { 
       headers = headers+"${it.name} : ${it.value}\n" 
      } 
      throw new HttpResponseException(resp.getStatus(),"HTTP call failed. Status code: ${resp.getStatus()}\n${headers}\n"+ 
              "Response: "+(resp as HttpResponseDecorator).getData()) 
      return resp 
     } 
0

Eigentlich kann man extrahieren die Vollständige Antwort von der ausgelösten Ausnahme. Wenn Ihre erfasste Ausnahme beispielsweise e ist und der Antworttext JSON ein Feld mit dem Namen myCustomErrorCode enthalten soll, können Sie dessen Wert überprüfen, indem Sie e.response.data.myCustomErrorCode zusätzlich zu e.statusCode betrachten.