private HttpURLConnection getConnection()

in src/main/java/com/epam/dep/esp/common/web/WebUtils.java [63:113]


    private HttpURLConnection getConnection(int count) throws MalformedURLException, IOException, URISyntaxException, HttpException {
        URIBuilder builder = new URIBuilder(path);

        if (params != null) {
            for (Map.Entry<String, String> item : params.entrySet()) {
                builder.addParameter(item.getKey(), item.getValue());
            }
        }

        URL serverAddress = builder.build().toURL();


        HttpURLConnection conn = (HttpURLConnection) serverAddress.openConnection();
        conn.setConnectTimeout(timeout);
        conn.setReadTimeout(timeout);
        if (password != null && login != null && password.length() > 0 && login.length() > 0) {
            conn.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString((login + ":" + password).getBytes()));
        }

        if (headers != null) {
            for (Map.Entry<String, String> item : headers.entrySet()) {
                conn.setRequestProperty(item.getKey(), item.getValue());
            }
        }

        conn.setRequestMethod(method);
        if ((method.equalsIgnoreCase("post")
                || method.equalsIgnoreCase("put"))
                && payload != null) {
            if (payload instanceof String) {
                conn.setDoOutput(true);
                OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream(), StandardCharsets.UTF_8);
                writer.write((String) payload);
                writer.close();
            }
        }

        if (count == 0) {
            throw new HttpException("Can't find path: " + serverAddress);
        }
        switch (conn.getResponseCode()) {
            case 302:
            case 301:
                String redirectTo = conn.getHeaderField("location");
                conn.disconnect();
                path = redirectTo;
                conn = getConnection(count - 1);
                break;
        }
        return conn;
    }