2012-09-23 16 views
9

RestTemplate के तरीके postForEntity()RestClientException फेंक दें। मैं कैच ब्लॉक में उस अपवाद ऑब्जेक्ट से HTTP स्टेटस कोड और प्रतिक्रिया निकाय निकालना चाहता हूं। मैं उसे कैसे कर सकता हूँ?जब कोई RestClientException फेंक दिया जाता है तो मैं HTTP स्थिति कोड और प्रतिक्रिया निकाय को कैसे पुनर्प्राप्त करूं?

उत्तर

17

RestClientException को पकड़ने के बजाय, विशेष HttpClientErrorException पकड़ें।

try { 
    Link dataCenterLink = serviceInstance.getLink("dataCenter"); 
    String dataCenterUrl = dataCenterLink.getHref(); 
    DataCenterResource dataCenter = 
     restTemplate.getForObject(dataCenterUrl, DataCenterResource.class); 
    serviceInstance.setDataCenter(dataCenter); 
} catch (HttpClientErrorException e) { 
    HttpStatus status = e.getStatusCode(); 
    if (status != HttpStatus.NOT_FOUND) { throw e; } 
} 

HttpClientErrorExceptiongetStatusCode और getResponseBodyAsByteArray प्रदान करता है स्थिति कोड और शरीर में क्रमश: प्राप्त करने के लिए:

यहाँ एक उदाहरण है।

+3

मैंने कुछ और उपयोगी विवरण जोड़ने के लिए अपना उत्तर संपादित कर लिया है और इस प्रश्न/उत्तर को कैनोनिकल के रूप में अधिक उपयोगी बना दिया है। –

+0

ग्रेट एडिट। धन्यवाद! –

+0

अधिक सामान्य ''HttpStientusCodeException' है जिसे 'HttpClientErrorException' और' HttpServerErrorException' द्वारा विरासत में मिला है। –

संबंधित मुद्दे