Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Отправка формы на HTTP-сервер (POST)

Важно: UNet — это устаревшее решение, а также новая многопользовательская и сетьсистема Unity, которая обеспечивает многопользовательскую игру. игры через компьютерную сеть. Подробнее
См. в Словарь
Решение (Netcode для GameObjects) находится в разработке. Дополнительную информацию и дальнейшие действия см. на веб-сайте Unity Netcode for GameObjects.

Существуют две основные функции для отправки данных на сервер в формате HTML. Если вы выполняете миграцию из системы WWW, см. раздел Использование WWWForm ниже.

Использование IMultipartFormSection

Чтобы обеспечить больший контроль над тем, как вы указываете данные формы, система UnityWebRequest содержит реализуемый пользователем интерфейс IMultipartFormSection. Для стандартных приложений Unity также предоставляет реализации по умолчанию для разделов данных и файлов: MultipartFormDataSection и MultipartFormFileSection.

Перегрузка UnityWebRequest.POST принимает в качестве второго параметра аргумент List, все члены которого должны быть IMultipartFormSections . Сигнатура функции:

UnityWebRequest.Post(string url, List formSections);

Подробнее

  • Эта функция создает UnityWebRequest и устанавливает целевой URL в качестве первого строкового параметра. Он также устанавливает заголовок Content-Type для UnityWebRequest в соответствии с данными формы, указанными в списке объектов IMultipartFormSection. ли>
  • Эта функция по умолчанию прикрепляет DownloadHandlerBuffer к UnityWebRequest. Это сделано для удобства — вы можете использовать это для проверки ответов вашего сервера.
  • Подобно функции WWWForm POST, эта функция HLAPI по очереди вызывает каждый предоставленный IMultipartFormSection и форматирует их в стандартный составной форме, как указано в RFC 2616.
  • Предварительно отформатированные данные формы хранятся в стандартном объекте UploadHandlerRaw, который затем прикрепляется к UnityWebRequest. В результате изменения в объектах IMultipartFormSection, выполненные после вызова UnityWebRequest.POST, не отражаются в данных, отправляемых на сервер. .

Пример

using UnityEngine; using UnityEngine.Networking; using System.Collections; using System.Collections.Generic; public class MyBehavior : MonoBehaviour { void Start() { StartCoroutine(Upload()); } IEnumerator Upload() { List formData = new List(); formData.Add(new MultipartFormDataSection("field1=foo&field2=bar")); formData.Add(new MultipartFormFileSection("my file data", "myfile.txt")); UnityWebRequest www = UnityWebRequest.Post("https://www.my-server.com/myform", formData); yield return www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.Log(www.error); } else { Debug.Log("Form upload complete!"); } } }

Использование WWWForm (устаревшая функция)

Чтобы облегчить переход с системы WWW, система UnityWebRequest позволяет использовать старый объект WWWForm для предоставления данных формы.

В этом случае сигнатура функции:

UnityWebRequest.Post(string url, WWWForm formData);

Подробнее

  • Эта функция создает новый UnityWebRequest и задает в качестве целевого URL значение первого строкового аргумента. Он также считывает любые пользовательские заголовки, сгенерированные аргументом WWWForm (например, Content-Type), и копирует их в UnityWebRequest.
  • Эта функция по умолчанию прикрепляет DownloadHandlerBuffer к UnityWebRequest. Это сделано для удобства — вы можете использовать это для проверки ответов вашего сервера.
  • Эта функция считывает необработанные данные, сгенерированные объектом WWWForm, и буферизует их в объекте UploadHandlerRaw, который присоединен к UnityWebRequest. Таким образом, изменения в объекте WWWForm после вызова UnityWebRequest.POST не изменяют содержимое UnityWebRequest.

Пример

using UnityEngine; using UnityEngine.Networking; using System.Collections; public class MyBehavior : MonoBehaviour { void Start() { StartCoroutine(Upload()); } IEnumerator Upload() { WWWForm form = new WWWForm(); form.AddField("myField", "myData"); UnityWebRequest www = UnityWebRequest.Post("https://www.my-server.com/myform", form); yield return www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.Log(www.error); } else { Debug.Log("Form upload complete!"); } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3