Ошибка с http запросами

У меня возникла проблема с получением ответа от сервера, есть ссылка, на которую посылается get запрос, но вместо ответа ошибка:

public class Main {
    public static void main(String[] args) throws IOException {
        String url = "http://arizona-download.react.group/desktop/ping/Arizona/ping.json";

        URL obj = new URL(url);
        HttpURLConnection connection = (HttpURLConnection) obj.openConnection();

        connection.setRequestMethod("GET");

        BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();

        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        System.out.println(response.toString());
    }
}

Ошибка:

Exception in thread "main" java.io.IOException: Server returned HTTP response code: 403 for URL: http://arizona-download.react.group/desktop/ping/Arizona/ping.json
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1900)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1498)
at Main.main(Main.java:18)

Ответы (1 шт):

Автор решения: Дмитрий

Проблема вполне типичная - вы не указали юзер агента. Замечательно, что вы знаете о использовании буферизации (BufferedReader), но помните, что все потоки ввода-вывода надо закрывать, иначе получить проблемы. С версии Java 7 и выше есть конструкции try with resources, которую рекомендуется использовать с этой целью. Кроме того, с версии Java 8 преобразовать BufferedReader в String можно на много проще. И напоследок... Использовать StringBuffer нежелательно, а если вам нужен его функционал воспользуйтесь классом StringBuilder.

public class Main {
    public static void main(String[] args) throws IOException {
        String url = "http://arizona-download.react.group/desktop/ping/Arizona/ping.json";
        HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
        connection.setRequestMethod("GET");
        connection.setRequestProperty("User-Agent", "Mozilla/5.0");
        try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
            String result = in.lines().collect(Collectors.joining());
            System.out.println(result);
        }
    }
}
→ Ссылка