2016-10-17 3 views
1

Я пытаюсь отправить запрос GET на сайт следующим образом:Java Connection Получить запрос Exception Handling

uRL = new URL(URLString); 
connection = (HttpURLConnection) uRL.openConnection();  
// optional default is GET 
connection.setRequestMethod("GET");  
// add request header 
connection.setRequestProperty("User-Agent", USER_AGENT);  
responseCode = connection.getResponseCode(); 

Однако, мне нужно обрабатывать исключения. Например, если выбрано исключение, я попробую снова запросить. Как я могу это сделать?

ответ

2

вы можете использовать while с try-catch так что если exception произойдет переход к следующей итерации в противном случае breakloop

int attempts=5; 
boolean flag=false; 
while(attempts-- > 0){ 
    try{ 
    uRL = new URL(URLString); 
    connection = (HttpURLConnection) uRL.openConnection();  
    connection.setRequestMethod("GET");  
    connection.setRequestProperty("User-Agent", USER_AGENT);  
    responseCode = connection.getResponseCode(); 
    flag=ture; 
    break; 
    }catch(Exception e){ 
     e.printStackTrace(); 
     continue; 
    } 
} 


if(flag){ 
    // mean request executed successfully 
    // don't throw exception, unless you want to break the current flow of execution 
    } 

Чтобы ограничить попытки, просто использовать счета переменный (попытку) и переменный флаг для проверки успешное выполнение

+0

флаг должен быть правдивым во время цикла вместо того, чтобы – Khan

2

идея заключается в том, чтобы поместить его в for петлю с заданного количества возможных попыток для того, чтобы предотвратить бесконечный цикл, то в любое время вы получите исключение и запишите его, затем вы можете попробовать еще раз. Если это невозможно сделать после фиксированного количества попыток, вы можете создать исключение.

boolean success = false; 
for (int i = 1; !success && i <= maxTries; i++) { 
    try { 
     uRL = new URL(URLString); 
     connection = (HttpURLConnection) uRL.openConnection(); 
     // optional default is GET 
     connection.setRequestMethod("GET"); 
     // add request header 
     connection.setRequestProperty("User-Agent", USER_AGENT); 
     responseCode = connection.getResponseCode(); 
     success = true; 
    } catch (Exception e) { 
     logger.log(Level.SEVERE, "Could not access to the server due to {}, try {}/{}", 
      new Object[]{e.getMessage(), i, maxTries} 
     ); 
    } 
} 
if (!success) { 
    throw new IllegalStateException("Could not access to the server"); 
} 
Смежные вопросы