2015-01-10 7 views
21

Ich verwende Volley Netzwerkbibliothek in meiner Anwendung.Android Volley senden Daten zweimal

Das Problem ist, dass es Daten mehr als einmal sendet, wenn die Netzwerkverbindung langsam ist.

Und Nachdem ich Google dieses Problem, alles, was ich zu diesem Thema ist unter Punkt finden:

connection.setChunkedStreamingMode(0); 

Aber ich bin nicht in der Lage meiner Volley Bibliothek Hurlkstack Klassen zu bearbeiten.

Dort heißt es:

Das Glas dieser Klasse Datei gehören Container android privaten Bibliotheken, die nicht an Quelle Attachments erlaubt Änderung auf sie Einträge.

Was soll ich jemand mir tun können

helfen, ich habe den folgenden Code, wo ich ändern sollte.

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

sehen, ob dies hilft Ihnen http://stackoverflow.com/questions/20027995/android-volley-returning-results-twice-for -one-request – Rohit5k2

+1

Kannst du posten, wie du deine Daten postest? weil ich nur den Code zum Abrufen von Daten mit 'JsonObjectRequest' sehen kann. ' – Piyush

+0

@PiyushGupta i Antwort haben, wenn es mir genügen did'nt als ich mehr werde nach; Sie können Politik für die' jsonObjReq.setRetryPolicy (neu DefaultRetryPolicy ( 0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)) gesetzt wiederholen info danke für die antwort –

Antwort

50

Keine Notwendigkeit connection.setChunkedStreamingMode(0); zu verwenden volley sending data twice Fehler zu vermeiden. Sie müssen festlegen Politik für aktuelle Anforderung wiederholen:

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

siehe folgendes Beispiel https://developer.android.com/training/volley/simple.html –

+2

@ShashikalaChavan: Aufruf 'setRetryPolicy' vor' AppController.getInstance(). AddToRequestQueue (jsonObjReq); 'Zeile –

+0

ok ich werde überprüfen und Lass dich wissen, danke für die Antwort ............. –

6

Verwenden Sie den folgenden Code nach Abschluss der neuen Response.ErrorListener() -Methode in Ihrem Volley-Parsing. Hoffe es ist nützlich für dich. Ich hatte dasselbe Problem und löste es mit demselben Code.

Code:

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

Dies funktioniert

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

request.setRetryPolicy(mRetryPolicy);