UnityWebRequest предоставляет модульную систему для составления HTTP-запросов и обработки HTTP-ответов. Основная цель системы UnityWebRequest — позволить играм Unity взаимодействовать с серверной частью веб-браузера. Он также поддерживает функции с высоким спросом, такие как сегментированные HTTP-запросы, потоковые операции POST/PUT и полный контроль над заголовками и командами HTTP.
Система состоит из двух уровней:
- High-Level API (HLAPI) является оболочкой низкоуровневого API и предоставляет удобный интерфейс для выполнения стандартных операций.
- Низкоуровневый API (LLAPI) обеспечивает максимальную гибкость для более опытных пользователей
Поддерживаемые платформы
Система UnityWebRequest поддерживает большинство платформ Unity:
- Все версии редактора и отдельных проигрывателей
- WebGL
- Мобильные платформы: iOSмобильная операционная система Apple. Подробнее
См. в Словарь, Android - Универсальная платформа Windows
- PS4 и PSVita
- XboxOne
- Нинтендо Переключатель
Архитектура
Экосистема UnityWebRequest разбивает транзакцию HTTP на три отдельные операции:
- Передача данных на сервер
- Получение данных с сервера
- Управление потоком HTTP (например, перенаправления и обработка ошибок)
Чтобы предоставить лучший интерфейс для опытных пользователей, каждая из этих операций управляется собственными объектами:
- Объект
UploadHandler
обрабатывает передачу данных на сервер - Объект
DownloadHandler
обрабатывает получение, буферизацию и постобработку данных, полученных с сервера. - Объект
UnityWebRequest
управляет двумя другими объектами, а также управляет потоком HTTP. В этом объекте определяются настраиваемые заголовки и URL-адреса, а также хранится информация об ошибках и перенаправлениях.
Для любой HTTP-транзакции нормальный поток кода выглядит следующим образом:
- Создать объект веб-запроса
- Настройка объекта веб-запроса
- Настроить собственные заголовки
- Установить HTTP-команду (например, GET, POST, HEAD — пользовательские команды разрешены на всех платформах, кроме Android)
- Установить URL
- (Необязательно) Создайте обработчик загрузки и прикрепите его к веб-запросу.
- Предоставить данные для загрузки
- Предоставьте HTTP-форму для загрузки
- (Необязательно) Создайте обработчик загрузки и прикрепите его к веб-запросу.
- Отправить веб-запрос
- Если внутри сопрограммы, вы можете получить результат вызова
Send()
, чтобы дождаться завершения запроса
- Если внутри сопрограммы, вы можете получить результат вызова
- (Необязательно) Чтение полученных данных из обработчика загрузки.
- (Необязательно) Чтение информации об ошибке, кода состояния HTTP и заголовков ответов из объекта UnityWebRequest