2016-03-24 14 views
1

私はvolleyを使用してJSONObjectを自分のサーバーに送信し、応答を返します。コードを実行すると、デバッグモードでのJsonObjectRequestが呼び出され、ライブラリがエラーをスローせずにネットワークレスポンスを正常に解析できることがわかります。しかし、deliverResponse()以降、私のonResponseリスナーは呼び出されていません。私はJsonObjectRequestクラスを使用して投稿し、JsonObjectsを受け取ります。ここに私のコードの一部です:Volleyリスナーが呼び出されていない

主な用途:

 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方法:

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); 

} 

誰もが呼び出されませに対する応答リスナーに引き起こしているか知っていますか?私はVolleyが私の投稿要求を送信し、応答を正しく解析していることを知っています。私はdebuggerからそれを見ることができ、私のサーバーは何のエラーも投げていません。ネットワークレスポンスを解析しただけで何もしません。

答えて

0

メインアプリケーションのリスナーについて話していますか?あなたはあなたのpostメソッドでそれらを呼び出すことはありません。

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

私は実際にそれを持っています。私は上記のc/pを忘れてしまった。しかし、いずれにしても、中にブレークポイントが設定されています。 public void onResponse(JSONObject response){ rqHandler.onResponse(response); // stuff } これは決してトリガーされないので、リスナーが呼び出されていないと思うようになります。 – KPERI

関連する問題