Как сделать HTTP запрос в Java?
Всем привет! Подскажите, пожалуйста, как правильно выполнить HTTP-запрос (GET и POST) на чистой Java без использования сторонних библиотек вроде Apache HttpClient или OkHttp. Я новичок в Java и пытаюсь разобраться с сетевыми запросами.
Пробовал использовать класс HttpURLConnection из пакета java.net, но столкнулся с проблемами. Вот мой код для GET-запроса:
URL url = new URL("https://api.example.com/data");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
int responseCode = connection.getResponseCode();
System.out.println("Response Code: " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());Код работает, но я не уверен, что это лучший способ. Также я не понимаю, как обрабатывать POST-запросы с телом (JSON) и как правильно закрывать соединение. Пробовал добавлять connection.disconnect(), но не уверен, когда это нужно делать. Еще интересует обработка ошибок — что делать, если сервер вернул код 4xx или 5xx?
Ожидаю получить пример корректного кода для GET и POST запросов с обработкой исключений, таймаутами и правильным освобождением ресурсов. Желательно с комментариями для новичков. Заранее спасибо!