2015-01-10 2 views
21

Я использую Volley Сетевая библиотека в моем приложении.Android volley отправка данных дважды

Проблема заключается в том, что она отправляет данные более одного раза, когда сетевое соединение происходит медленно.

И после того как я Google этот вопрос, все я могу найти по этому вопросу ниже точки:

connection.setChunkedStreamingMode(0); 

Но я не могу редактировать свои библиотеки залп классы Hurlkstack.

Он говорит:

баночка этого файла класса принадлежат контейнерными андроида частных библиотек, которые не позволяют модификацию вложений источника на нем записей.

Что я должен сделать, может кто-нибудь помочь мне

У меня есть следующий код, в котором я должен изменить .

private void makeJsonObjectRequest() { 
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, 
      "http://example.com/***.php", obj, new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        try { 
         response.getString("success"); 
         } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
       } 
      }); 

    AppController.getInstance().addToRequestQueue(jsonObjReq); 
} 
+0

Смотрите, если это поможет вам http://stackoverflow.com/questions/20027995/android-volley-returning-results-twice-for -one-request – Rohit5k2

+1

Можете ли вы опубликовать, как вы публикуете свои данные? потому что я могу просто увидеть код для извлечения данных с помощью 'JsonObjectRequest'. Вы можете установить повторить политику для этого 'jsonObjReq.setRetryPolicy (новый DefaultRetryPolicy ( 0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));' – Piyush

+0

@PiyushGupta я получил ответ, если он did'nt удовлетворить меня, чем я буду размещать более спасибо за ответ –

ответ

50

Нет необходимости использовать connection.setChunkedStreamingMode(0);, чтобы избежать volley sending data twice ошибки. вам необходимо установить повторить политику для текущего запроса:

JsonObjectRequest jsonObjReq = new JsonObjectRequest(...); 
jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(
         0, 
         DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
         DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
+0

см. Следующий пример https://developer.android.com/training/volley/simple.html –

+2

@ShashikalaChavan: вызов 'setRetryPolicy' перед' AppController.getInstance(). AddToRequestQueue (jsonObjReq); 'строка –

+0

ok я проверю и дайте вам знать спасибо за ответ ............. –

6

Использования ниже коды после завершения методанового Response.ErrorListener() в вашем залповом разборе. Надеюсь, это полезно для вас. Я столкнулся с той же проблемой и разрешил ее с тем же кодом.

Код:

jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(
       30000, 
       DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
       DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
1

Это будет работать

RetryPolicy mRetryPolicy = new DefaultRetryPolicy(
0, 
DefaultRetryPolicy.DEFAULT_MAX_RETRIES, 
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); 

request.setRetryPolicy(mRetryPolicy); 
Смежные вопросы