Pude resolver esto usando Apache Commons HttpClient, vea el siguiente fragmento de código.
Como temía, la URLConnection proporcionada por java.net es una implementación muy simple y solo probará la primera dirección IP de la lista resuelta. Si realmente no puede usar otra biblioteca, tendrá que escribir su propio manejo de errores. Es un poco desordenado, ya que tendrá que resolver todas las direcciones IP manualmente con InetAddress, y conectarse a cada IP pasando el encabezado "Host: domain.name" a la pila HTTP usted mismo hasta que una de las direcciones IP responda.
La biblioteca Apache es mucho más robusta y permite una gran personalización. Puede controlar cuántas veces lo volverá a intentar y, lo que es más importante, probará automáticamente todas las direcciones IP resueltas con el mismo nombre hasta que una de ellas responda correctamente.
HttpRequestRetryHandler myRetryHandler = new HttpRequestRetryHandler() {
@Override
public boolean retryRequest(IOException exception, int count, HttpContext context) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
return count < 30;
}
};
ConnectionKeepAliveStrategy keepAlive = new ConnectionKeepAliveStrategy() {
@Override
public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
return 500;
}
};
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getParams().setParameter("http.socket.timeout", new Integer(2000));
httpclient.getParams().setParameter("http.connection.timeout", new Integer(2000));
httpclient.setHttpRequestRetryHandler(myRetryHandler);
httpclient.setKeepAliveStrategy(keepAlive);
HttpGet httpget = new HttpGet("http://remotehost.com");
HttpResponse httpres = httpclient.execute(httpget);
InputStream is = httpres.getEntity().getContent();
espero que esto ayude!
Si el parámetro es una url en lugar de una ip, entonces no necesita preocuparse por esto. – Jacob