2016-03-24 22 views
1

olarak adlandırılmıyor Sunucum için bir JSONObject göndermek için volley kullanıyorum ve yanıt alın. Kodumu çalıştırdığımda, hata ayıklama modunda, 'un JsonObjectRequest olduğunu görebiliyorum ve kütüphanenin herhangi bir hata atmadan ağ yanıtını başarılı bir şekilde ayrıştırabildiğini görebiliyorum. Ancak, deliverResponse() ve daha sonra benim onResponse dinleyicileri çağrılmıyor. JsonObjects'u göndermek ve almak için JsonObjectRequest sınıfını kullanıyorum. Volley Dinleyiciler

Ana uygulama

:

 JSONObject jso = new JSONObject(); 
     jso.put("mac", "XX"); 

     VolleyRequest.post("http://something", jso, applicationCntxt, new IResponseHandler() { 
      @Override 
      public void onResponse(JSONObject response) { 
      } 

      @Override 
      public void onError(VolleyError error) { 

      } 
     }); 

VolleyRequest.post yöntemi:

public static void post(String url, JSONObject payload, Context context,  final IResponseHandler rqHandler) 
    { 
    Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() { 
     public void onResponse(JSONObject response) { 
      //stuff 
     } 
    }; 

    Response.ErrorListener errorListener = new Response.ErrorListener() { 
     public void onErrorResponse(VolleyError error) { 
      //stuff 
     } 
    }; 

    JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST, url, payload, listener, errorListener); 
    jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(10000, 0, 1f)); 

    VolleyRequestQueue.getInstance(context).addToRequestQueue(jsObjRequest); 

} 

herkes tepki dinleyici üzerinde neden olduğunu bilmek çağrılmadığı için İşte benim kod parçası mı? Volley'un posta isteğimi gönderip yanıtı doğru şekilde ayrıştırdığını biliyorum. Bunu debugger'dan görebiliyorum ve sunucum herhangi bir hata atmıyor. Ağ yanıtı ayrıştırıldıktan sonra hiçbir şey yapmıyor

cevap

0

Ana Uygulamadaki dinleyicilerden mi bahsediyorsunuz? Onları asla postalama yönteminde çağırmazsınız.

public static void post(String url, JSONObject payload, Context context,  final IResponseHandler rqHandler) 
{ 
Response.Listener<JSONObject> listener = new Response.Listener<JSONObject>() { 
    public void onResponse(JSONObject response) { 
     rqHandler.onResponse(response) ;  
     //stuff 
    } 
}; 

Response.ErrorListener errorListener = new Response.ErrorListener() { 
    public void onErrorResponse(VolleyError error) { 
     rqHandler.onError(error) ; 
     //stuff 
    } 
}; 

JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST, url, payload, listener, errorListener); 
jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(10000, 0, 1f)); 

VolleyRequestQueue.getInstance(context).addToRequestQueue(jsObjRequest); 

} 
+0

Oops, Bende gerçekten var. Ben sadece yukarıda c/p unuttum. Ancak, her durumda, no'lu Genel Açıklamalar (JSONObject yanıtı) 'nda yer alan kesme noktalarım var. (0)rqHandler.onResponse (response); // stuff } Ve asla tetiklenmezler, bu da beni dinleyicinin çağrılmadığını düşünür. – KPERI