2017-10-11 33 views
1

我用這個方法在服務器和請求發送JSON對象接收數據:「解析錯誤,請過一段時間後再試一次!」我怎麼能停留更長的時間從網址在android的響應?

private void makeJsonObjectRequest1() { 
    message = "abcd"; 
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST, 
      G.myurl, js, new Response.Listener<JSONObject>() { 

     @Override 
     public void onResponse(JSONObject jsonObject) { 

      Log.d("***1", jsonObject.toString()); 
      try { 
       Log.d("***1", jsonObject.toString()); 
      } catch (Exception e) { 
       e.printStackTrace(); 
       Log.i("***2", "Exc"); 
      } 
     } 
    }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d("***3", "Error: " + error.getMessage()); 

      if (error instanceof NetworkError) { 
       message = "internet"; 
      } else if (error instanceof ServerError) { 
       message = "server"; 
      } else if (error instanceof AuthFailureError) { 
       message = "Cannot connect to Internet...Please check your connection!"; 
      } else if (error instanceof ParseError) { 
       message = "Parsing error! Please try again after some time!!"; 
      } else if (error instanceof NoConnectionError) { 
       message = "Cannot connect to Internet...Please check your connection!"; 
      } else if (error instanceof TimeoutError) { 
       message = "Connection TimeOut! Please check your internet connection."; 
      } 
      Log.i("***4", "Error:" + message); 
     } 
    }); 
    G.getInstance().addToRequestQueue(jsonObjReq); 
} 

我收到 並在服務器我收到來自應用程序的兩個請求! 我該如何解決這個問題? 謝謝你幫我

回答

0

爲了增加您需要設置將您的請求,請求隊列設置爲前重試的凌空政策,超時時間:

jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(
    30000, // This is your time in milliseconds for this its 30 seconds 
    DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

記住時間是毫秒的你還可以設置回退限制和重試次數。

避免做同樣的請求重試次數的兩倍改爲你想要的東西而你的情況,我們希望排球請求NOT,因爲重試,如果重試你的服務器可能已經接收兩個請求,這樣整體解決方案變爲:

jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(
30000, //the number of milliseconds to try out I have put 30seconds==30000milliseconds 
0, // maxNumRetries = 0 means no retry then volley wont retry 
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

您可以查看一些官方培訓from this link並親自探索課程。

相關問題