<T> T doPost(String uri, Map<String, String> headers, Map<String, Object> params, int readTimeout, Class<T> targetType){ for (;;){ try { return doPost(currentServer, uri, headers, params, readTimeout, targetType); } catch (AuthFailException e){ throw new IllegalArgumentException("appKey isn't right, please check"); } catch (Server503Exception | HttpRequest.HttpRequestException e){ String oldServer = currentServer; log.warn("current server({}) is maybe unavailable, trying to selects a new server", oldServer); selectServer(); log.warn("old server({}) is unavailable, select a new server({})", oldServer, currentServer); } } }