반응형
✔ Post raw json into UnityWebRequest
JsonUtility, Convert json from object
Http 서버 body에 Post 방식으로 json 데이터를 전달하는 방법이다.
json으로 전달하기 위해서는 먼저 데이터를 json으로 변경해야한다.
Unity에서는 JsonUtility를 제공하여 쉽게 변환할 수 있다.
오브젝트를 Json으로 변환 : JsonUtility.ToJson(object)
Json을 오브젝트로 변환 : JsonUtility.FromJson(jsonString, System.Type)
아래는 예제 샘플이다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Data;
using UnityEngine.Networking;
[System.Serializable]
public class User
{
public string Name;
public string ID;
}
[System.Serializable]
public class Users
{
public List<User> users = new List<User>();
}
public class Test : MonoBehaviour
{
void Start()
{
//Test용 User create
User user1 = new User
{
Name = "Kim",
ID = "qq"
};
User user2 = new User
{
Name = "Lee",
ID = "tt"
};
Users user_arr = new Users();
//Add user
user_arr.users.Add(user1);
user_arr.users.Add(user2);
//Convert JsonString
string json = JsonUtility.ToJson(user_arr);
//request Post
StartCoroutine(Upload("http://URL", json));
}
IEnumerator Upload(string URL, string json)
{
using (UnityWebRequest request = UnityWebRequest.Post(URL, json))
{
byte[] jsonToSend = new System.Text.UTF8Encoding().GetBytes(json);
request.uploadHandler = new UploadHandlerRaw(jsonToSend);
request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json");
yield return request.SendWebRequest();
if (request.isNetworkError || request.isHttpError)
{
Debug.Log(request.error);
}
else
{
Debug.Log(request.downloadHandler.text);
}
}
}
}
감사합니다.
반응형
'Programming > Unity' 카테고리의 다른 글
[Unity] .mtl file 이란? (3) | 2021.05.18 |
---|---|
[Unity] EventSystem.current - 클릭했을때 UI인지 Gameobject인지 구별하기 (2) | 2021.05.10 |
[Unity3D] 웹 데이터 파일 다운로드,업로드(GET, POST) 및 저장 (UnityWebRequest) (2) | 2021.03.16 |
[Unity3D] Unity에서 C# 스크립트 클릭 시 Visual Studio 안열림, 무반응 [ 해결법 ] (2) | 2021.01.07 |
[Unity3D] Unity Remote 5 동작 되지 않는 문제 [해결법] (5) | 2020.12.31 |
댓글