Чета уеб страница, използвайки HttpClient по този начин:
httpclient = new DefaultHttpClient();
httpget = new HttpGet("http://google.com");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream PIS = entity.getContent();
}
Имам нужда от таймаут за цялата работа (свързване, изчакване и четене - всички заедно или поотделно).
Опитах се да задам параметри за таймаут точно след httpclient = new DefaultHttpClient();
ред:
int timeout=10;
httpclient.getParams().setParameter("http.socket.timeout", timeout * 1000);
httpclient.getParams().setParameter("http.connection.timeout", timeout * 1000);
httpclient.getParams().setParameter("http.connection-manager.timeout", new Long(timeout * 1000));
httpclient.getParams().setParameter("http.protocol.head-body-timeout", timeout * 1000);
Но не проработи (Изтича времето за изчакване след около 10 пъти повече от времето за изчакване, което зададох).
Така че опитах нишка за анулиране на заявка след време, използвайки httpget.abort()
& httpclient.getConnectionManager().shutdown()
точно след httpget = new HttpGet("http://google.com");
ред по следния начин:
(new Timer()).schedule(new java.util.TimerTask() {
public void run() {
httpget.abort();
httpclient.getConnectionManager().shutdown();
}
},10000);
но нямаше ефект (таймерът работи; но тези два реда код не правят нищо!)!!
Опитах се да използвам и това:
URL url = new URL("http://google.com");
URLConnection con = url.openConnection();
con.setConnectTimeout(10000);
con.setReadTimeout(10000);
InputStream PIS = con.getInputStream();
но беше същото като първия ми опит (задаване на параметри за изчакване в HttpClient
)!!
какъв е проблемът?
Как мога да разреша проблема си с изчакване?
Благодаря