2015-03-03 20 views
6

Obecnie otrzymuję wyjątek HttpResponseException, który ma tylko statusCode. Jak mogę uzyskać kompletną odpowiedź?Jak uzyskać pełną odpowiedź dla Restovient Groovy nieudana odpowiedź

Oto kod używam

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()) 
    } 

i to tylko wyjście to:

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

Odpowiedz

4

Dodaj zwyczaj powiodło obsługi Response:

 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

Właściwie można wyodrębnić pełna odpowiedź od zgłaszanego wyjątku. Na przykład, jeśli wychwycony wyjątek to e, a treść odpowiedzi JSON powinna zawierać pole o nazwie myCustomErrorCode, można sprawdzić jego wartość, patrząc na e.response.data.myCustomErrorCode oprócz e.statusCode.