我想要運行使用HTTPClient線程安全的,異步HTTP請求。我注意到它不尊重我的CONNECTION_TIMEOUT
論點。如何在Apache HTTP客戶端中設置連接超時?
的代碼的ColdFusion/Java的混合體。無論什麼樣的我供應CONNECTION_TIMEOUT
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();
,請求總是返回200 OK。檢查下面的輸出。
- 如何設置一個有效的連接超時?
- 不CONNECTION_TIMEOUT做什麼?
輸出
200 OK http://www.google.com/
200 OK http://www.google.com/
[snip]
5 requests using Async Client in: 2308 ms
感謝。我正在嘗試你的代碼,但需要額外的工作才能將它轉換爲CF.和我一起裸露。在前兩個linse中'HTTPConnectionParams'引用了我需要創建的一個對象。可能是'org.apache.http.params。*'但你提供給'setConnectionTimeout'的'params'參數來自哪裏呢?我不能把它扔到那裏,否則它會拋出一個'params is undefined'錯誤...對不起,如果這聽起來很傻,但是使用java/CF混合代碼是很乏味的。另外,SchemeRegistry對象是否必需,我可以將其忽略嗎? – Mohamad
HttpParams params = new BasicHttpParams();這裏有一些更多的信息:http://hc.apache.org/httpcomponents-client-ga/tutorial/html/index.html和javadoc的是在這裏:http://hc.apache.org/httpcomponents-core-ga /httpcore/apidocs/org/apache/http/params/HttpParams.html – Seth