Знакомство с протоколом HTTP

Знакомство с протоколом HTTP #

HTTP-приложения #

Презентацию можно посмотреть по ссылке.

Видео-запись на Rutube

HTTP-протокол #

Презентацию можно посмотреть по ссылке.

Видео-запись на Rutube

URI-пути #

Презентацию можно посмотреть по ссылке.

Видео-запись на Rutube

Знакомство с библиотекой http4k #

Презентацию можно посмотреть по ссылке.

Видео-запись на Rutube

Документация #

Задача № 1. Скачивание HTML-документа #

Результаты работы приложения выводятся в стандартный поток вывода.

Реализуйте консольное приложение, которое скачивает HTML-документ.

В качестве аргументов приложение получает два аргумента:

  • URI HTML-документа, который необходимо скачать.
  • Путь к каталогу, в который необходимо сохранить HTML-документ.

Для реализации приложения необходимо подключить библиотеку http4k-core и выбранную реализацию клиента.

Если соединение установлено и ответ получен, приложение должно сохранить полученный документ в файле ЦЕЛЕВОЙ КАТАЛОГ/ИМЯ ДОМЕНА.html, где ИМЯ ДОМЕНА — имя хоста из запрошенного URI, например lms.crafted.su.

В качестве тестов можно воспользоваться адресами:

Задача № 2. Обработка несуществующего пути #

Доработайте предыдущее приложение, чтобы оно обрабатывало ситуацию, при которой указанный адрес не существует. Для этого после получения ответа сначала необходимо оценить статус ответа. Необходимо сохранять файл только в том случае, если код ответа — от 200 до 299.

В качестве тестов воспользуйтесь следующими адресами:

  • http://lms.crafted.su/unknown-path — сервер отвечает кодом 404, файл сохранять нельзя;
  • http://unknown.crafted.su — имя хоста не разрешается, ответ не получен, приложение должно завершиться с понятным сообщением об ошибке.

Обратите внимание, что в первом случае ответ получен и анализируется код ответа, а во втором случае запрос завершается ошибкой соединения.

Задача № 3. Скачивание и обработка JSON-документа #

Скачайте следующий JSON-документ с помощью HTTP-клиента, извлеките из него список треугольников и отобразите статистику.

Документ содержит массив объектов со следующими полями:

  • sideA, sideB, sideC — длины сторон треугольника, целые числа;
  • borderColor — цвет границы треугольника, строка.

Для получения массива объектов используйте библиотеку Jackson (ObjectMapper.readValue).

Сначала необходимо вывести статистику по цветам границы треугольника. Список цветов должен быть отсортирован лексикографически.

Пример вывода:

Статистика по цветам:
* GREEN: 1
* RED: 15

Аналогично выводится статистика по периметрам, диапазон указывается в формате НАЧАЛО-КОНЕЦ:

Статистика по периметрам:
* 0-100: 2
* 101-200: 17

Диапазоны выводятся в порядке возрастания. Приведённые числа — пример, а не данные из triangles.json.

Затем необходимо вывести статистику по длине периметров треугольников по промежуткам: от 0 до 100, от 101 до 200, …, от 3801 до 3900. Периметром считается сумма длин трёх сторон. Гарантируется, что периметр треугольников не больше 3900. Не надо выводить промежуток, в котором не оказалось треугольников.

JSON-документ доступен по ссылке и по адресу https://lms.crafted.su/web-app-development/2026-2-it-3/course/02-http-introduction/02-basic-http-server/triangles.json.

© A. M. Васильев, 2026, CC BY-SA 4.0, andrey@crafted.su