5
Próbuję uzyskać użycia funkcji setConnectTimeout tak:HttpUrlConnection setConnectTimeout nie działa?
protected HttpURLConnection getConnection() throws SocketTimeoutException, IOException{
Log.d("HTTPRequest", address);
URL page = new URL(address);
HttpURLConnection connection = (HttpURLConnection) page.openConnection();
connection.setUseCaches(cacheResult);
connection.setConnectTimeout(3000);
connection.connect();
return connection;
}
, a następnie:
public String getTextData() throws InternetConnectionUnavailableException {
try{
HttpURLConnection conn = getConnection();
StringBuffer text = new StringBuffer();
InputStreamReader in = new InputStreamReader((InputStream) conn.getContent());
BufferedReader buff = new BufferedReader(in);
String line;
while (true) {
if((line = buff.readLine()) != null){
text.append(line);
}else{
break;
}
}
return (text.toString());
} catch (SocketTimeoutException socketTimeoutException) {
throw new InternetConnectionUnavailableException();
} catch (IOException ioException) {
throw new InternetConnectionUnavailableException();
}
}
Jednak nigdy nie robi się w "catch (SocketTimeoutException SocketTimeoutException)" blok. Co tu jest nie tak.
P.S. Do testowania stworzyłem stronę, która kładzie mój serwer w sen przez 10 sekund.
porządku! Wydaje się działać, ale nie będzie con.setRequestMethod ("HEAD"); zepsuć coś? – user1462299
Tak jak przypuszczałem z powodu tej linii powyżej normalne linki nie mogły zostać załadowane. Po prostu usunąłem ten i dodałem conn.connect(); Rzuca teraz wyjątek IOException po upływie limitu czasu - nie, jeśli jest to wyjątek IOException lub cokolwiek innego, chyba że działa – user1462299
Wygląda na to, że przekroczenie limitu czasu nie zadziała, jeśli sieć zostanie rozłączona w trakcie pobierania. – NoBugs