Unity WebRequest 및 UploadHandler 사용 안내
이 문서에서는 Unity의 Networking API를 사용해 데이터 업로드를 위한 UploadHandlerRaw
클래스에 대해 설명합니다. 이 클래스는 원격 서버에 데이터를 전송하는 데 필요한 기본 기능을 제공합니다.
개요
Unity는 다양한 네트워킹 솔루션을 지원하지만, UNet은 더 이상 지원되지 않으므로 새로운 멀티플레이어 및 네트워킹 솔루션으로 이동하는 것이 좋습니다. 현재 UploadHandlerRaw
를 사용하여 데이터 전송 작업을 수행합니다.
UploadHandlerRaw 클래스
UploadHandlerRaw
클래스는 데이터 버퍼를 기반으로 하여 원격 서버에 데이터를 전송할 수 있게 해줍니다. 이 클래스는 다음과 같은 주요 속성을 갖고 있습니다:
- data: 업로드할 데이터의 바이트 배열입니다.
- contentType: 요청의 콘텐츠 유형을 설정합니다.
기본 설정
Content-Type
헤더를 수동으로 설정하지 않으면, 기본값으로application/octet-stream
이 사용됩니다.disposeUploadHandlerOnDispose
속성이true
인 경우,UnityWebRequest
가 삭제될 때 자동으로 연결된UploadHandler
도 제거됩니다.
예제 코드
아래는 UnityWebRequest
와 UploadHandlerRaw
를 사용하여 데이터를 업로드하는 방법에 대한 예제입니다:
byte[] payload = new byte[1024];
// ... payload에 데이터를 채웁니다 ...
UnityWebRequest wr = new UnityWebRequest("https://www.mysite.com/data-upload");
UploadHandler uploader = new UploadHandlerRaw(payload);
// "Content-Type: custom/content-type" 헤더 전송
uploader.contentType = "custom/content-type";
wr.uploadHandler = uploader;
이 코드는 URL에 데이터를 업로드할 준비를 설정하는 방법을 보여줍니다. payload
배열에 필요한 데이터로 채운 후, 이를 통해 서버에 요청을 보낼 수 있습니다.
활용 사례
파일 업로드
사용자가 파일을 선택하고 이를 서버에 업로드하는 경우, 적절한 byte[]
형태로 파일 내용을 변환하여 UploadHandlerRaw
를 통해 업로드할 수 있습니다.
API 통신
서버와의 REST API 통신에서 JSON 형식의 데이터를 전송할 때 유용합니다. JSON 데이터를 바이트 배열로 변환한 후, UploadHandlerRaw
를 사용하여 데이터를 전송합니다.
멀티플레이어 게임 데이터 전송
게임에서 플레이어의 상태, 점수 또는 게임 내 이벤트를 서버에 전송하는 데 사용될 수 있습니다.
주의 사항
UploadHandlerRaw
는 현재 한 가지 타입의 업로드 핸들러만 사용할 수 있으므로, 멀티파트 업로드가 필요한 경우 별도의 구현이 필요합니다.UnityWebRequest
와 관련된 네트워크 작업은 비동기적으로 실행되며, 응답을 처리하기 위해 추가 로직이 필요할 수 있습니다.
이 문서에서는 Unity의 UploadHandlerRaw
를 활용하여 데이터를 효과적으로 전송하는 방법을 설명하고, 실제 사용 예제를 통해 이해를 돕고자 하였습니다.