# Unity Web Request Sending Form

> Send HTML form data to a server using the UnityWebRequest form APIs.

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

## 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!");
        }
    }
}
```
