Stoppen von stillen Versuchen in HttpURLConnection

8

Ich verwende HttpURLConnection auf Android KitKat , um einige Daten an einen Server zu senden. Der Server braucht lange, um zu antworten, und die Verbindung wird 1 bis 3 Mal im Hintergrund wiederholt, bevor das Zeitlimit überschritten wird. Ich möchte nicht, dass es erneut versucht, da der Server auf alle Anfragen reagiert, was zu Bad Things (TM) führt.

Ich habe System.setProperty("http.keepAlive", "false") vor dem Öffnen der Verbindung ausprobiert, aber das hilft nicht.

    
Erik Browne 25.06.2014, 20:20
quelle

4 Antworten

2

Für POST-Anrufe festlegen

%Vor%

und dies sollte die stillen Wiederholungen beheben. Der Fehlerbericht und die Problemumgehung finden Sie hier .

    
Espen Riskedal 29.06.2015 21:09
quelle
0
  • Implementieren Sie selbst ein hartes Zeitlimit und erzwingen Sie das Schließen von HttpURLConnection durch das Aufrufen von disconnect Dies kann von Ihrem Activity mit android handler ; Wenn Sie AsyncTask verwenden, können Sie einfach cancel oder Thread.interrupt() :

    aufrufen %Vor%

    Und in Ihrem httpUrlConnTask , rufen Sie disconnect :

    auf %Vor%

    Möglicherweise müssen Sie urlConnection in einem anderen internen untergeordneten Thread ausführen, damit Sie eine while -Schleife in der asynctask-Überwachung für isCancelled ausführen können. Und ein try..catch , damit Sie alle Streams richtig schließen können.

  • Sie haben bereits keepAlive false und readTimeout , ziehen Sie in Erwägung, connection timeout too . Dadurch wird das Socket-Timeout festgelegt.

ashoke 09.11.2014 06:37
quelle
-1

Sie müssen System.setProperty("sun.net.http.retryPost", "false")

einstellen     
EJP 23.11.2014 22:34
quelle
-4

Android-HTTP-Clients

Vor Froyo hatte HttpURLConnection einige frustrierende Fehler. Insbesondere könnte das Aufrufen von close () auf einem lesbaren InputStream den Verbindungspool vergiften . Umgehen Sie das, indem Sie das Verbindungspooling deaktivieren:

%Vor%     
AZ_ 13.11.2014 03:58
quelle

Tags und Links