티스토리 뷰
반응형
public class WebAPIHelper
{
//이벤트 리턴값 받을 생성
public delegate void ReceiveEventHandler(object obj);
public event ReceiveEventHandler ReceiveEventHandlerEvent;
//Singleton을 활용하여 1개의 인스턴스 유지 및 접근 효율성 증가
private static WebAPIHelper _instance { get; set; }
public static WebAPIHelper Instance
{
get
{
return _instance ?? (_instance = new WebAPIHelper());
}
}
//Get 함수 제네릭 타입을 활용하여 다양한 타입 리턴값 대응
public IEnumerator Get<T>(string uri, string prameter = "")
{
using (UnityWebRequest request = UnityWebRequest.Get($"{SettingsInfo.WEBSERVICE_HOST}/{uri}/{prameter}"))
{
yield return request.SendWebRequest();
try
{
var jsonString = request.downloadHandler.text;
//json 객체로 변환
var dataObj = JsonConvert.DeserializeObject<T>(jsonString);
//이벤트로 데이터를 보낸다.이벤트 등록한곳에서 받을 수 있게
ReceiveEventHandlerEvent(dataObj);
}
catch (Exception e)
{
}
}
}
public IEnumerator Post(string uri, WWWForm parameter)
{
using (UnityWebRequest request = UnityWebRequest.Post($"{SettingsInfo.WEBSERVICE_HOST}/{uri}", parameter))
{
yield return request.SendWebRequest();
Debug.Log(request.result);
}
}
//Post 함수 Json객체를 활용하여 파라미터를 내보낸다
//핵심은 json 파싱하여 객체로 보내면 json 형식이 깨져버려서 반드시 byte로 변환 후 보내야한다.
// request.uploadHandler와 request.SetRequestHeader이 핵심이다
public IEnumerator Post(string uri, string parameter)
{
using (UnityWebRequest request = UnityWebRequest.Post($"{SettingsInfo.WEBSERVICE_HOST}/{uri}", parameter))
{
byte[] jsonToSend = new UTF8Encoding().GetBytes(parameter);
request.uploadHandler = new UploadHandlerRaw(jsonToSend);
request.SetRequestHeader("Content-Type", "application/json");
yield return request.SendWebRequest();
Debug.Log(request.result);
request.Dispose();
}
}
//Post 함수 WWWForm 객체를 활용하여 파라미터를 내보낸다
public WWWForm Parameter_beacon(string name, string rssi, string range, string position)
{
WWWForm form = new WWWForm();
form.AddField("code", CommonUtils.GenerateID());
form.AddField("name", name);
form.AddField("position", position);
form.AddField("rssi", rssi);
form.AddField("range", range);
return form;
}
//Post 함수 WWWForm 객체를 활용하여 파라미터를 내보낸다
public WWWForm Parameter_user(string name, string nickName)
{
WWWForm form = new WWWForm();
form.AddField("code", CommonUtils.GenerateID());
form.AddField("name", name);
form.AddField("nickName", nickName);
return form;
}
//Post 함수 WWWForm 객체를 활용하여 파라미터를 내보낸다
public WWWForm Parameter_point(string point, string userCode, string itemCode)
{
WWWForm form = new WWWForm();
form.AddField("userCode", userCode);
form.AddField("point", point);
form.AddField("itemCode", itemCode);
return form;
}
}
#unity #webapihelper #get #post
반응형
'유니티(unity)' 카테고리의 다른 글
[unity/android]유니티 안드로이드에서 백그라운드로 타이머 구현 방법 (0) | 2021.12.06 |
---|---|
[unity/Webapi] WebHelper 활용 편 (0) | 2021.12.06 |
[unity/json]Newtonsoft Json 라이브러리 손쉽게 추가하는법(package manager 이용) (4) | 2021.12.06 |
[unity/api] 웹 API 호출시 UnityWebRequest post 활용하여 list 파라미터로 넘기기(with json) (1) | 2021.12.02 |
[unity(유니티)]안드로이드,아이폰에서 화면 꺼짐 방지 / 화면 안꺼지게 하는 방법 (0) | 2021.11.23 |
댓글
반응형