11 Stimmen

Warum funktioniert bei Apache HttpClient das Zeitlimit für die Verbindung nicht?

Meine Implementierung von httpclient wirft gelegentlich eine Ausnahme beim Aufruf von doGetConnection(). Ich habe jedoch die folgende Zeitüberschreitung eingestellt

_moHttpClient.setHttpConnectionFactoryTimeout(30000);

Es sieht fast so aus, als ob mein Timeout nicht abgeholt wird. Muss ich irgendwo anders eine Zeitüberschreitung einstellen, um sicherzustellen, dass dieses Verhalten nicht erneut auftritt?

10voto

Brian Agnew Punkte 260470

Welche Ausnahme wird ausgelöst?

Vergessen Sie nicht, Sie haben zwei Zeitüberschreitungen zu ändern/prüfen. Von HttpConnectionParams

setConnectionTimeout()
setSoTimeout()

so dass Sie steuern können, wie lange Sie auf eine Verbindung zum Server warten und wie lange Operationen auf dem Socket dauern dürfen, bevor die Zeit abläuft.

7voto

JeeBee Punkte 17329
    HttpConnectionManagerParams cmparams = new HttpConnectionManagerParams();
    cmparams.setSoTimeout(10000);
    cmparams.setTcpNoDelay(true);
    HttpConnectionManager manager = new SimpleHttpConnectionManager();
    manager.setParams(cmparams);
    params = new HttpClientParams();
    params.setSoTimeout(5000);
    client = new HttpClient(params, manager);

Ich frage mich, warum ich zwei verschiedene SoTimeouts eingestellt habe. Vielleicht habe ich versucht, herauszufinden, welche tatsächlich aktiv war, da ich die gleichen Probleme wie Sie hatte, als ich sie verwendete.

Das obige ist bei uns gerade im Live-Code, aber ich kann nicht sagen, ob es funktioniert, weil es korrekt ist, oder weil die Vorsehung auf mich herabschaut (und das andere Ende normalerweise immer verfügbar ist).

4voto

cmparams.setSoTimeout(10000);

Diese ist für alle HttpClient standardmäßig.

params.setSoTimeout(5000);

Und dieser hier ist für einen bestimmten httpclient.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X