기술 자료

Unity Engine

Unity Engine

Unity Web Request Sending Form

Send HTML form data to a server using the UnityWebRequest form APIs.
읽는 시간 2분최근 업데이트: 한 달 전

데이터를 HTML 양식으로 포맷된 서버로 전송하는 두 가지 주요 함수가 있습니다. WWW 시스템에서 마이그레이션하는 경우 아래의 WWWForm 사용을 참조하십시오.

IMultipartFormSection 사용

양식 데이터를 지정하는 방법을 더 잘 제어할 수 있도록
UnityWebRequest
시스템에는 사용자가 구현할 수 있는
IMultipartFormSection
인터페이스가 포함되어 있습니다. Unity는 표준 애플리케이션의 경우
MultipartFormDataSection
및
MultipartFormFileSection
데이터 및 파일 섹션에 대한 기본 구현도 제공합니다.
UnityWebRequest.POST
의 과부하는 두 번째 파라미터로 List 인자를 받습니다. 이때 이 인수의 멤버는 모두
IMultipartFormSections
여야 합니다. 이 경우 함수 서명은 다음과 같습니다.
UnityWebRequest.Post(string url, List<IMultipartFormSection> formSections);

세부 정보

  • 이 함수는
    UnityWebRequest
    를 생성하고 타겟 URL을 첫 번째 문자열 파라미터로 설정합니다. 또한
    UnityWebRequest
    의 Content-Type 헤더를
    IMultipartFormSection
    오브젝트 목록에 지정된 양식 데이터에 대해 적절하게 설정합니다.
  • 기본적으로 이 함수는
    UnityWebRequest
    에
    DownloadHandlerBuffer
    를 연결합니다. 편의를 위해서, 서버의 응답을 확인하는 데 사용할 수 있습니다.
  • WWWForm POST
    함수와 마찬가지로, 이 HLAPI 함수는 제공된 각
    IMultipartFormSection
    을 순서대로 호출하여 RFC 2616에 지정된 표준 멀티파트 양식으로 포맷합니다.
  • 사전 포맷된 양식 데이터는 표준
    UploadHandlerRaw
    오브젝트에 저장되어
    UnityWebRequest
    에 연결됩니다. 따라서
    UnityWebRequest.POST
    호출 후에 수행된
    IMultipartFormSection
    오브젝트 변경 사항은 서버로 전송된 데이터에 반영되지 않습니다.

예제

using UnityEngine;using UnityEngine.Networking;using System.Collections;using System.Collections.Generic;public class MyBehavior : MonoBehaviour{ void Start() { StartCoroutine(Upload()); } IEnumerator Upload() { var formData = new List<IMultipartFormSection>(); formData.Add(new MultipartFormDataSection("field1=foo&field2=bar")); formData.Add(new MultipartFormFileSection("my file data", "myfile.txt")); using var 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
    에 복사합니다.
  • 기본적으로 이 함수는
    UnityWebRequest
    에
    DownloadHandlerBuffer
    를 연결합니다. 편의를 위해서, 서버의 응답을 확인하는 데 사용할 수 있습니다.
  • 이 함수는
    WWWForm object
    에서 생성된 원시 데이터를 읽고
    UnityWebRequest
    에 연결된
    UploadHandlerRaw
    오브젝트에 버퍼링합니다. 따라서
    UnityWebRequest.POST
    호출 후의
    WWWForm
    오브젝트 변경은
    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"); using var 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!"); } }}