2015-01-10 19 views
21

Sto usando Volley libreria di rete nella mia applicazione.volley invio dei dati Android due volte

Il problema è che si sta inviando dati più di una volta quando la connessione di rete è lenta.

E dopo che Google questo problema, tutto quello che posso trovare su questo problema è inferiore al punto:

connection.setChunkedStreamingMode(0); 

ma io non sono in grado di modificare i miei biblioteca volley classi Hurlkstack.

Dice:

Il vaso di questo file di classe appartengono a container Android biblioteche private che non consentono la modifica agli allegati di origine su di esso voci.

Cosa devo fare qualcuno può aiutarmi

Ho il seguente codice dove devo modificare .

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

vedere se questo ti aiuta http://stackoverflow.com/questions/20027995/android-volley-returning-results-twice-for -una richiesta – Rohit5k2

+1

Puoi pubblicare come pubblichi i tuoi dati ?? perché posso solo vedere il codice per recuperare i dati usando 'JsonObjectRequest'. È possibile impostare riprovare politica per quel 'jsonObjReq.setRetryPolicy (nuova DefaultRetryPolicy ( 0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));' – Piyush

+0

@PiyushGupta ho avuto risposta, se mi fatto'nt soddisfare oltre mi post più info grazie per aver risposto –

risposta

50

Non c'è bisogno di usare connection.setChunkedStreamingMode(0); per evitare volley sending data twice bug. è necessario impostare riprovare la politica per la richiesta corrente:

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

vedere l'esempio seguente https://developer.android.com/training/volley/simple.html –

+2

@ShashikalaChavan:. Chiamare '' setRetryPolicy' prima AppController.getInstance() addToRequestQueue (jsonObjReq); 'linea –

+0

ok controllerò e ti faccio sapere grazie per aver risposto ............. –

6

Usa sotto il codice dopo il completamento del metodonuova Response.ErrorListener() nel parsing volley. Spero che sia utile per te. Ho affrontato lo stesso problema e lo ho risolto con lo stesso codice.

Codice:

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

Ciò funzionerà

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

request.setRetryPolicy(mRetryPolicy);