Desidero eseguire richieste HTTP asincrone thread-safe utilizzando HTTPClient. Ho notato che non rispetta il mio argomento CONNECTION_TIMEOUT
.Come impostare un timeout della connessione nel client http Apache?
Il codice è ibrido ColdFusion/Java.
client = loader.create("org.apache.http.impl.nio.client.DefaultHttpAsyncClient").init();
CoreConnectionPNames = loader.create("org.apache.http.params.CoreConnectionPNames");
client.getParams()
.setIntParameter(JavaCast("string", CoreConnectionPNames.SO_TIMEOUT), 10)
.setIntParameter(JavaCast("string", CoreConnectionPNames.CONNECTION_TIMEOUT), 10);
client.start();
request = loader.create("org.apache.http.client.methods.HttpGet").init("http://www.google.com");
future = client.execute(request, javacast("null", ""));
try {
response = future.get();
}
catch(e any) {}
client.getConnectionManager().shutdown();
Indipendentemente da ciò che fornisco per connection_timeout, le richieste di ritorno sempre 200 OK. Controlla l'output qui sotto.
- Come impostare un timeout della connessione efficace?
- CONNECTION_TIMEOUT fa qualcosa?
uscita
200 OK http://www.google.com/
200 OK http://www.google.com/
[snip]
5 requests using Async Client in: 2308 ms
Grazie. Sto provando il tuo codice, ma ci vuole del lavoro extra per tradurlo in CF. Così nudo con me. Nei primi due linse 'HTTPConnectionParams' fa riferimento a un oggetto che ho bisogno di creare. Porbably 'org.apache.http.params. *' Ma da dove proviene l'argomento 'params' che fornite a' setConnectionTimeout'? Non riesco a lanciarlo, altrimenti manderei un errore 'params is undefined' ... scusa se questo sembra ottuso, ma lavorare con il codice ibrido java/CF è noioso. Inoltre, l'oggetto SchemeRegistry è necessario, posso semplicemente lasciarlo fuori? – Mohamad
Parametri HttpParams = new BasicHttpParams(); Ci sono altre informazioni qui: http://hc.apache.org/httpcomponents-client-ga/tutorial/html/index.html e il javadoc è qui: http://hc.apache.org/httpcomponents-core-ga /httpcore/apidocs/org/apache/http/params/HttpParams.html – Seth