티스토리 뷰

반응형

[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

반응형
댓글
반응형