2017-10-11 10 views
1

나는이 방법을 사용 : "구문 분석 오류가 잠시 후 다시 시도하십시오 !!"내가받을안드로이드의 URL 응답에 어떻게 더 오래 머무를 수 있습니까? 서버 및 요청에 JSON 개체를 보내 데이터 수신을 위해

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을 확인하고 직접 수업을 탐색 할 수 있습니다.