Version: 2022.2
언어: 한국어
HTTP 서버에서 에셋 번들 다운로드(GET)
HTTP 서버에 원시 데이터 업로드(PUT)

HTTP 서버로 양식 보내기(POST)

중요: UNet은 지원이 중단된 솔루션이며, 새로운 멀티플레이어 및 네트워킹 솔루션(게임 오브젝트용 넷코드)이 개발 중입니다. 자세한 내용과 다음 단계는 게임 오브젝트용 Unity 넷코드 웹사이트에 있는 정보를 참조하십시오.

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

IMultipartFormSection 사용

양식 데이터를 지정하는 방식을 더 원활하게 조절하기 위해 UnityWebRequest 시스템에는 사용자가 구현 가능한 IMultipartFormSection 인터페이스가 포함되어 있습니다. 표준 애플리케이션의 경우 Unity는 데이터와 파일 섹션에 대한 디폴트 구현 MultipartFormDataSectionMultipartFormFileSection도 제공합니다.

UnityWebRequest.POST의 오버로드는 두 번째 파라미터로서 List 인수를 받아들입니다. 이 인수의 멤버는 모두 IMultipartFormSections여야 합니다. 함수 시그니쳐는 다음과 같습니다.

UnityWebRequest.Post(string url, List<IMultipartFormSection> formSections);

세부 정보

  • 이 함수는 UnityWebRequest를 생성하며, 타겟 URL을 첫 번째 문자열 파라미터로 설정합니다. 또한 UnityWebRequest의 Content-Type 헤더를 IMultipartFormSection 오브젝트의 리스트에 지정되어 있는 양식 데이터에 적절하게 설정합니다.
  • 기본적으로 이 함수는 DownloadHandlerBufferUnityWebRequest에 연결합니다. 이 작업은 편의를 위한 것으로, 서버의 응답을 확인하는 데 사용할 수 있습니다.
  • 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()
    {
        List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
        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에 복사합니다.
  • 기본적으로 이 함수는 DownloadHandlerBufferUnityWebRequest에 연결합니다. 이 작업은 편의를 위한 것으로, 서버의 응답을 확인하는 데 사용할 수 있습니다.
  • 이 함수는 WWWForm 오브젝트에 의해 생성된 원시 데이터를 읽고 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");
     
        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!");
        }
    }
}
HTTP 서버에서 에셋 번들 다운로드(GET)
HTTP 서버에 원시 데이터 업로드(PUT)