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.
Für POST-Anrufe festlegen
%Vor%und dies sollte die stillen Wiederholungen beheben. Der Fehlerbericht und die Problemumgehung finden Sie hier .
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()
:
Und in Ihrem httpUrlConnTask
, rufen Sie disconnect
:
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.
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:
Tags und Links android httpurlconnection