HttpURLConnection response code handling This snippet from a downloader callable handles HTTP status codes. I need critique on both the style (for or do-while loop better here?) and functionality. Should I manage the delay differently? Do I need to handle InterruptedException specifically?

HttpURLConnection connection = null;
boolean connected=false;
outer:
for(int retry=0;retry&lt;=RETRIES&amp;&amp;!connected;retry++)
{
 if(retry&gt;0) {log.warning("retry "+retry+"/"+RETRIES);Thread.sleep(RETRY_DELAY_MS);}
 connection = (HttpURLConnection)entries.openConnection();
 connection.connect();
 switch(connection.getResponseCode())
 {
  case HttpURLConnection.HTTP_OK: log.fine(entries +" **OK**");connected=true;break; // fine, go on  
  case HttpURLConnection.HTTP_GATEWAY_TIMEOUT: log.warning(entries+" **gateway timeout**");break;// retry
  case HttpURLConnection.HTTP_UNAVAILABLE: System.out.println(entries+ "**unavailable**");break;// retry, server is unstable
  default: log.severe(entries+" **unknown response code**.");break outer; // abort
 }
}
connection.disconnect();
log.severe("Aborting download of dataset.");
Readability
Let's reformat your code quickly:

    HttpURLConnection connection = null;
    boolean connected = false;
    outer: for (int retry = 0; retry &lt;= RETRIES &amp;&amp; !connected; retry++) {
        if (retry &gt; 0) {
            log.warning(&quot;retry &quot; + retry + &quot;/&quot; + RETRIES);
            Thread.sleep(RETRY_DELAY_MS);
        }
        connection = (HttpURLConnection) entries.openConnection();
        connection.connect();
        switch (connection.getResponseCode()) {
            case HttpURLConnection.HTTP_OK:
                log.fine(entries + &quot; **OK**&quot;);
                connected = true;
                break; // fine, go on
            case HttpURLConnection.HTTP_GATEWAY_TIMEOUT:
                log.warning(entries + &quot; **gateway timeout**&quot;);
                break;// retry
            case HttpURLConnection.HTTP_UNAVAILABLE:
                System.out.println(entries + &quot;**unavailable**&quot;);
                break;// retry, server is unstable
            default:
                log.severe(entries + &quot; **unknown response code**.&quot;);
                break outer; // abort
        }
    }
    connection.disconnect();
    log.severe(&quot;Aborting download of dataset.&quot;);


Fixed:

1-liners are hard to read:
  case HttpURLConnection.HTTP_UNAVAILABLE: System.out.println(entries+ &quot;**unavailable**&quot;);break;// retry, server is unstable


spacing inside for-loop conditions:
  for(int retry=0;retry&lt;=RETRIES&amp;&amp;!connected;retry++)


indentation - 1-space indentation is 'just wrong'™.


Functionality
Right, how does this code work? There are a few problems I can (now) see in here:

On HTTP_OK, it breaks out of the switch, then it exits the loop (because &amp;&amp; !connected), and then immediately disconnects and logs a severe error? This can't be right?
HTTP_GATEWAY_TIMEOUT logs a warning.... great, but HTTP_UNAVAILABLE does a System.out.println

The InterruptedException handling is not shown here. There are articles on how to do this properly. Google up on that.
Suggestion
I recommend a sub-function, with a do-while loop (the following is a quick hack-up - untested):
private static final HttpURLConnection getConnection(URL entries) throws InterruptedException{
    int retry = 0;
    boolean delay = false;
    do {
        if (delay) {
            Thread.sleep(RETRY_DELAY_MS);
        }
        HttpURLConnection connection = (HttpURLConnection)entries.openConnection();
        switch (connection.getResponseCode()) {
            case HttpURLConnection.HTTP_OK:
                log.fine(entries + &quot; **OK**&quot;);
                return connection; // **EXIT POINT** fine, go on
            case HttpURLConnection.HTTP_GATEWAY_TIMEOUT:
                log.warning(entries + &quot; **gateway timeout**&quot;);
                break;// retry
            case HttpURLConnection.HTTP_UNAVAILABLE:
                log.warning(entries + &quot;**unavailable**&quot;);
                break;// retry, server is unstable
            default:
                log.severe(entries + &quot; **unknown response code**.&quot;);
                break; // abort
        }
        // we did not succeed with connection (or we would have returned the connection).
        connection.disconnect();
        // retry
        retry++;
        log.warning(&quot;Failed retry &quot; + retry + &quot;/&quot; + RETRIES);
        delay = true;
        
    } while (retry &lt; RETRIES);
    
    log.severe(&quot;Aborting download of dataset.&quot;);
    
}