티스토리 뷰
유니티(unity)
[unity/api] 웹 API 호출시 UnityWebRequest post 활용하여 list 파라미터로 넘기기(with json)
개발자 고포고 2021. 12. 2. 01:35반응형
[unity/api] 웹 API 호출시 UnityWebRequest post 활용하여 list 파라미터로 넘기기
정말 정말 고생해서 알아냈다,
UnityWebRequest 의 기본사용법은
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class MyExampleBehaviour : MonoBehaviour
{
public IEnumerator Start()
{
using (UnityWebRequest request = UnityWebRequest.Get("https://my-website.com"))
{
yield return request.Send();
Debug.Log("Server responded: " + request.downloadHandler.text);
}
}
}
다음과 같다.(유니티 본 사이트 예제)
Post 또한 크게 다르지 않다.
[클래스] Serializable 어노테이션을 붙여준다.
[Serializable]
public class score
{
public string userCode { get; set; }
public int point { get; set; }
public string itemCode { get; set; }
}
[객체 생성 및 Json 파싱] 리스트를 생서하여 정보를 넣어준 후 제이슨으로 파싱한다.
List<score> points = new List<score>();
points.Add(new score { point = 120, itemCode = "1213", userCode = "1213" });
points.Add(new score { point = 150, itemCode = "1232", userCode = "1324" });
points.Add(new score { point = 160, itemCode = "121312", userCode = "134" });
var param = JsonConvert.SerializeObject(points);
StartCoroutine(WebAPIHelper.Instance.Post(SettingsInfo.API_POINT_LIST, param));
[Post 구현]
public IEnumerator Post(string uri, string parameter)
{
using (UnityWebRequest request = UnityWebRequest.Post(url, parameter))
{
//스트링으로 넘기면 json 구성이 깨지기 때문에 byte로 변환 후 파일로 업로드해준다
byte[] jsonToSend = new UTF8Encoding().GetBytes(parameter);
request.uploadHandler = new UploadHandlerRaw(jsonToSend);
//json 헤더 추가
request.SetRequestHeader("Content-Type", "application/json");
yield return request.SendWebRequest();
Debug.Log(request.result);
}
}
여기가 핵심이다,
-스트링으로 넘기면 json 구성이 깨지기 때문에 byte로 변환 후 파일로 업로드해준다
-json을 헤더에 명시해준다.
별것아닌것같지만 생각보다 자료도없고, 생각하지 못한 요소라서 고생했다.
#json #parseing #list넘기기 #array 넘기기 #api #post #UnityWebRequest #유니티 #unity #unity post #unity post : ''
#: '' #header #헤더 #conetent-type #application/json
반응형
'유니티(unity)' 카테고리의 다른 글
댓글
반응형