Тайм-аут httpurlconnection не происходит

У меня есть сервлет java, запрашивающий некоторый запрос к другому серверу, а на другом сервере есть сервер apache с таймаутом по умолчанию 2 минуты.

У меня есть два URL-адреса, которые нужно вызвать, в случае, если первый URL-адрес не работает, тогда мне нужно вызвать второй URL-адрес, но что происходит, так это то, что для первого URL-адреса время ожидания по умолчанию составляет 2 минуты. Но я не требую, чтобы тайм-аут был таким, скажем, через 10 секунд, если результат не был получен, тогда мне нужно вызвать второй URL-адрес

URL urlConnect = new URL(url.toString());
HttpURLConnection.setFollowRedirects(false);
HttpURLConnection urlc = (HttpURLConnection) urlConnect.openConnection();
urlc.setConnectTimeout(1000*20);
urlc.connect();

person raghul    schedule 06.02.2013    source источник
comment
Я также пробовал setreadtimeout, в любом случае он не работает   -  person raghul    schedule 06.02.2013
comment
да, setTimeout NSURLConnection не является точным, мы всегда добавляем таймер для управления им.   -  person yebw    schedule 06.02.2013


Ответы (1)


Просто поймайте SocketTimeoutException:

try{ 
         boolean timeout = false;
         URL urlConnect = new URL(url.toString());
         HttpURLConnection.setFollowRedirects(false);
         HttpURLConnection urlc = (HttpURLConnection) urlConnect.openConnection();
         urlc.setConnectTimeout(10000); // 10 sec
         urlc.setReadTimeout(10000); // 10 sec
         urlc.connect();
       }catch(SocketTimeoutException e){
           timeout = true;
       }finally{
          if(timeout){
             handleSecoundRequestFunction(); //the same principle as by first connection
          }
       }
person Oli    schedule 16.10.2016