HTML 양식으로 포맷된 서버에 데이터를 전송하기 위한 두 가지 기본 함수가 있습니다. WWW 시스템에서 마이그레이션하는 경우 아래의 WWWForm 사용을 참조하십시오.
양식 데이터를 지정하는 방식을 더 원활하게 조절하기 위해 UnityWebRequest
시스템에는 사용자가 구현 가능한 IMultipartFormSection
인터페이스가 포함되어 있습니다. 표준 애플리케이션의 경우 Unity는 데이터와 파일 섹션에 대한 디폴트 구현 MultipartFormDataSection
및 MultipartFormFileSection
도 제공합니다.
UnityWebRequest.POST
의 오버로드는 두 번째 파라미터로서 List 인수를 받아들입니다. 이 인수의 멤버는 모두 IMultipartFormSections
여야 합니다. 함수 시그니쳐는 다음과 같습니다.
WebRequest.Post(string url, List<IMultipartFormSection> formSections);
UnityWebRequest
를 생성하며, 타겟 URL을 첫 번째 문자열 파라미터로 설정합니다. 또한 UnityWebRequest
의 Content-Type 헤더를 IMultipartFormSection
오브젝트의 리스트에 지정되어 있는 양식 데이터에 적절하게 설정합니다.DownloadHandlerBuffer
를 UnityWebRequest
에 연결합니다. 이 작업은 편의를 위한 것으로, 서버의 응답을 확인하는 데 사용할 수 있습니다.WWWForm POST
함수와 마찬가지로, 이 HLAPI 함수는 제공된 각 IMultipartFormSection
을 순서대로 호출하여 RFC 2616에 지정된 표준 멀티파트 양식으로 포맷합니다.UploadHandlerRaw
오브젝트에 저장된 후 UnityWebRequest
에 연결됩니다. 그 결과 UnityWebRequest.POST
호출 후 IMultipartFormSection
오브젝트의 변경 사항은 서버에 전송된 데이터에 반영되지 않습니다.using UnityEngine;
using System.Collections;
using Unity.Networking;
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("http://www.my-server.com/myform", formData);
yield return www.Send();
if(www.isError) {
Debug.Log(www.error);
}
else {
Debug.Log("Form upload complete!");
}
}
}
WWW 시스템에서 마이그레이션할 수 있도록 UnityWebRequest 시스템은 WWWForm 오브젝트를 사용하여 양식 데이터를 제공할 수 있도록 허용합니다.
이 경우 함수 시그니쳐는 다음과 같습니다.
WebRequest.Post(string url, WWWForm formData);
UnityWebRequest
를 생성하고, 타겟 URL을 첫 문자열 인수의 값으로 설정합니다. 또한 WWWForm
인수(예: Content-Type)에 의해 생성된 커스텀 헤더를 읽고 UnityWebRequest
에 복사합니다.DownloadHandlerBuffer
를 UnityWebRequest
에 연결합니다. 이 작업은 편의를 위한 것으로, 서버의 응답을 확인하는 데 사용할 수 있습니다.WWWForm 오브젝트
에 의해 생성된 원시 데이터를 읽고 UnityWebRequest
에 연결된 UploadHandlerRaw
오브젝트에 버퍼링합니다. 따라서 UnityWebRequest.POST
호출 후 WWWForm
오브젝트를 변경해도 UnityWebRequest
의 콘텐츠가 변경되지 않습니다.using UnityEngine;
using System.Collections;
class MyBehavior: public MonoBehaviour {
void Start() {
StartCoroutine(Upload());
}
IEnumerator Upload() {
WWWForm form = new WWWForm();
form.AddField("myField", "myData");
UnityWebRequest www = UnityWebRequest.Post("http://www.my-server.com/myform", form);
yield return www.Send();
if(www.isError) {
Debug.Log(www.error);
}
else {
Debug.Log("Form upload complete!");
}
}
}