2012-02-25 17 views
6

मैं सेवा और ग्राहक दोनों के लिए जर्सी का उपयोग कर रहा हूं। जब मैं सेवा को कॉल करने का प्रयास कर रहा हूं, तो मुझे यह त्रुटि मिलती है:जर्सी क्लाइंट प्रतिक्रिया स्थिति 204

Exception in thread "main" com.sun.jersey.api.client.UniformInterfaceException: GET http://localhost:8080/Maze/rest/service/overview?countryid=1 returned a response status of 204 No Content 
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:528) 
at com.sun.jersey.api.client.ClientResponse.getEntity(ClientResponse.java:506) 
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:674) 
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) 
at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:503) 
at com.maze.client.MyClient.overviewTest(MyClient.java:34) 
at com.maze.client.MyClient.main(MyClient.java:64) 

मुझे समझ में नहीं आता क्यों।

यहाँ सेवा है:

@GET 
@Produces(MediaType.APPLICATION_JSON) 
@Path("/overview") 
public JSONArray getOverviewEntities(@QueryParam("countryid")String id){ 
    JSONArray array = null; 
    try{ 
    Integer countryId = Integer.parseInt(id); 
    ArrayList<Event> list = new ArrayList<Event>(); 
    EventService event = new EventService(); 
    EntityManagerSingleton.getInstance().getTransaction().begin(); 
    list.addAll(event.getList(countryId, "country", 5)); 
    EntityManagerSingleton.getInstance().getTransaction().commit(); 
    for(Event ev : list){ 
     array.add(EventService.toJSONObject(ev)); 
    } 
    } catch(Exception e){ 
     e.printStackTrace(); 
    } 
    return array; 
} 

और इस ग्राहक है:

public static void overviewTest(){ 
    WebResource wbr; 
    Client client = Client.create(); 
    wbr = client.resource("http://localhost:8080/Maze/rest/service/overview"); 
    JSONArray result = wbr.queryParam("countryid", "1").accept(MediaType.APPLICATION_JSON).get(JSONArray.class); 
    System.out.println(result.toString()); 
} 

मैं वास्तव में क्या समस्या हो सकती है के बारे में पता नहीं है। मुझे एक समान प्रश्न के साथ यहां एक और प्रश्न के बारे में पता है, लेकिन वे नहीं हैं।

अगर मुझे कुछ याद आ रहा है या आपको अतिरिक्त जानकारी की आवश्यकता है तो कृपया मुझे बताएं।

उत्तर

6

204 एक HTTP प्रतिक्रिया स्थिति कोड है जो क्लाइंट को सूचित करता है कि कोई सामग्री वापस नहीं आई है। जब आपके ग्राहक कॉल (JSONArray.class) प्राप्त करते हैं तो यह डेटा के साथ 200 की अपेक्षा करता है, इसलिए अपवाद। यह आपके सर्वर कार्यान्वयन से दिखता है कि सरणी चर कभी भी तत्काल नहीं होता है, इसलिए यदि आपकी सूची खाली नहीं थी, तो यह संभवतः array.add() में एनपीई की संभावना होगी, लेकिन इस मामले में ऐसा लगता है कि आपकी सूची खाली हो सकती है, इसलिए लूप को फिर से चालू नहीं किया जाता है और GetOverviewEntities विधि शून्य वापस आती है, इसलिए 204 परिणाम।

JSONArray array = new JSONArray(); // should fix the issue :) 
+0

हां, इस मुद्दे को हल किया गया। अब मुझे स्थिति 500 ​​(आंतरिक सर्वर त्रुटि) मिल रही है। लेकिन यह एक और सवाल है, मुझे लगता है। आपका बहुत बहुत धन्यवाद! – Dragos

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