2013-03-03 9 views
7

के साथ प्रतिक्रिया पढ़ना मैं जर्सी क्लाइंट का उपयोग कर जर्सी जेएक्स-आरएस सेवा का आह्वान करने के लिए इस कोड का उपयोग कर रहा हूं।जेएक्स-आरएस जर्सी क्लाइंट: स्टेटस कोड

public static void main(String[] args) { 
    ClientConfig config = new DefaultClientConfig(); 
    Client client = Client.create(config); 

    WebResource service = client.resource(getBaseURI()); 

    String msg = service.path("rest").path("ExceptionDemo").path("user").queryParam("id", "001").get(String.class);  
    System.out.println(msg); 

} 

private static URI getBaseURI() { 
    return UriBuilder.fromUri("http://localhost:8045/ExceptionHanlding").build(); 
} 

इस कोड को ठीक काम करता है जब प्रतिसाद स्थिति कोड 200 है लेकिन 200 के अलावा और कुछ के लिए, इस कोड को एक अपवाद फेंकता है।

इस कोड को कैसे संशोधित करें ताकि प्रतिक्रिया के स्टेटस कोड के आधार पर यह कुछ क्रियाएं कर सके?

उत्तर

12

.get(String.class) के बजाय .get(ClientResponse.class) का उपयोग करें। यह "खराब स्थिति पर अपवाद" व्यवहार को दबाता है, और ClientResponse आपको HTTP प्रतिक्रिया के बारे में विवरण तक पहुंच प्रदान करता है। "Receiving a response" के तहत उपयोगकर्ता मार्गदर्शिका में व्यवहार का संक्षेप में वर्णन किया गया है।

+0

उत्तर के लिए धन्यवाद, यह मेरी समस्या का समाधान किया। मैं उस लिंक में देख सकता हूं जिसका उपयोग वे नहीं कर रहे हैं: 'EntityTag e = response.getEntityTag(); '। इसका क्या उपयोग है? – WhoAmI

+0

संक्षेप में रखो, बेहतर कैशिंग सक्षम करने के लिए एक इकाई टैग अनन्य या निकट-विशिष्ट प्रतिक्रिया शरीर की पहचान करता है। [HTTP spec] में अधिक पढ़ें (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.11) या [विकिपीडिया] (http://en.wikipedia.org/wiki पर/HTTP_ETag)। –

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