Come rendere il timeout di connessione HTTP / disconnessi dopo un intervallo di tempo?
-
20-09-2019 - |
Domanda
Sono nuovo in Apache HttpClient
, ho usato il seguente codice per ottenere il timeout di connessione HTTP (staccato) dopo un certo intervallo di tempo:
PostMethod method = new PostMethod(authURL);
HttpClient client = new HttpClient();
HttpClientParams params= new HttpClientParams();
params.setParameter(params.CONNECTION_MANAGER_TIMEOUT, 10); //10 Nano second
client.executeMethod(method);
ma attendere per più di un minuto senza alcuna speranza di timeout / disconnessione? Dove può essere il problema?
Soluzione
Ci sono 2 timeout coinvolti nella HTTPClient, cercare di impostare sia,
client.getHttpConnectionManager().
getParams().setConnectionTimeout(5000);
client.getHttpConnectionManager().
getParams().setSoTimeout(5000);
Tuttavia, i valori verranno ignorati se la connessione è bloccato in una chiamata presa nativo. Così potrebbe essere necessario eseguire la richiesta in un thread diverso in modo da poter cronometrare fuori. Vedere la mia risposta a questa domanda su come farlo,
Altri suggerimenti
Il timeout di Connection Manager si attiva quando l'atto di cercare di ottenere una connessione dal responsabile del collegamento richiede troppo tempo. Questa non è la stessa come il timeout per la connessione http stesso. Utilizzare HttpClientParams.setSoTimeout () al posto.
Hai guardato l'impostazione SO_TIMEOUT ?
Imposta il timeout presa (SO_TIMEOUT) in millisecondi da utilizzare quando eseguire il metodo. Un valore di timeout zero viene interpretato come un infinito timeout.