Unity WebRequest 사용하기
이 문서는 Unity에서 HTTP 요청을 보내는 방법에 대해 설명합니다. 특히 UnityWebRequest 클래스를 사용하여 데이터를 서버에 업로드하는 방법을 알아보겠습니다. HTTP PUT 메소드를 사용할 때의 예제를 강조합니다.
버전 지원
다음은 이 문서가 지원하는 Unity 버전 목록입니다:
버전 |
---|
2022.3 |
2023.2 |
2023.1 |
2022.2 |
2022.1 |
2021.3 |
2021.2 |
2021.1 |
2020.3 |
2019.4 |
UnityWebRequest.PUT
Unity에서는 UnityWebRequest.PUT
메소드를 사용하여 HTTP PUT 요청을 보낼 수 있습니다. 이 메소드는 두 개의 인수를 필요로 합니다:
- URL: 요청을 보낼 대상 URL을 지정합니다.
- 데이터: 서버에 전송할 문자열 또는 바이트 배열입니다.
함수 시그니처
WebRequest.Put(string url, string data);
WebRequest.Put(string url, byte[] data);
세부 사항
UnityWebRequest
를 생성하고, 콘텐츠 타입을application/octet-stream
으로 설정합니다.- 이 함수는 표준
DownloadHandlerBuffer
를UnityWebRequest
에 연결합니다. - 결과 데이터를 반환할 수 있도록 POST 함수와 비슷한 방식으로 동작합니다.
UploadHandlerRaw
객체를 사용하여 업로드할 데이터를 저장하고,UnityWebRequest
에 연결합니다.- 바이트 배열을 사용하여 데이터를 업로드할 경우,
UnityWebRequest.PUT
호출 이후 바이트 배열의 변경 사항은 서버에 반영되지 않습니다.
예제: HTTP 서버에 데이터 업로드
다음은 Unity에서 HTTP 서버에 데이터를 업로드하는 간단한 코드 예제입니다:
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class MyBehavior : MonoBehaviour {
void Start() {
StartCoroutine(Upload());
}
IEnumerator Upload() {
byte[] myData = System.Text.Encoding.UTF8.GetBytes("This is some test data");
UnityWebRequest www = UnityWebRequest.Put("https://www.my-server.com/upload", myData);
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success) {
Debug.Log(www.error);
}
else {
Debug.Log("Upload complete!");
}
}
}
설명
- 코드의
Start
메소드는Upload
코루틴을 시작합니다. Upload
코루틴에서는 바이트 배열로 변환된 문자열 데이터를 서버로 전송합니다.- 요청이 완료된 후 성공 여부를 확인하고 결과를 콘솔에 출력합니다.
활용 예제
- 파일 업로드: 저희는 사용자가 선택한 파일을 서버에 업로드할 때 이 기능을 사용할 수 있습니다.
- 데이터 전송: 게임에서 사용자의 통계나 점수 데이터를 서버에 저장하는 기능을 구현할 수 있습니다.
- 상태 업데이트: 게임 내 특정 이벤트(예: 레벨 완료)를 서버에 알리는 데 활용할 수 있습니다.
이렇게 UnityWebRequest를 사용하면 쉽고 간편하게 HTTP 요청을 통해 데이터를 전송할 수 있습니다.