* HTTP: ์น์์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ request/response ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํ๋กํ ์ฝ.
HTTP ๋ฉ์๋ ์ค ๋ง์ด ์ฐ๋ 2๊ฐ์ง. GET, POST.
1) GET: ์๋ฒ๋ก๋ถํฐ ์ ๋ณด๋ฅผ ์กฐํํ๊ธฐ ์ํด ์ค๊ณ๋ ๋ฉ์๋.
๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ Body ์ ๋ด์ง ์๊ณ ์ฟผ๋ฆฌ ์คํธ๋ง์ ํตํด ์ ์กํ๋ค.
URL์ ๋์ ?์ ํจ๊ป ์ด๋ฆ๊ณผ ๊ฐ์ผ๋ก ์์ ์ด๋ฃจ๋ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฟผ๋ฆฌ์คํธ๋ง์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์์ฒญ ํ๋ผ๋ฏธํฐ๊ฐ ์ฌ๋ฌ๊ฐ ์ด๋ฉด &๋ก ์ฐ๊ฒฐํด์ ์ ์กํ๋ค.
ex) ์ฟผ๋ฆฌ ์คํธ๋ง์ ํฌํจํ URL ์ํ
www.example-url.com/resources?name1=value1&name2=value2 |
2) POST: ๋ฆฌ์์ค๋ฅผ ์์ฑ/๋ณ๊ฒฝํ๊ธฐ ์ํด ์ค๊ณ๋ ๋ฉ์๋.
์ ์กํด์ผํ ๋ฐ์ดํฐ๋ฅผ HTTP ๋ฉ์ธ์ง์ Body์ ๋ด์์ ์ ์กํ๋ค.
Body ์ ๊ธธ์ด์ ์ ํ์์ด ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค.
Request Header ์ Content-Type ์ ์์ฒญ ๋ฐ์ดํฐ ํ์ ์ ํ์ํด์ผ ํ๋ค.
โ ์ฃผ์์ ์ ๋ณด๊ฐ ์์ผ๋ฉด GET ๋ฐฉ์์ด๊ณ , ์์ผ๋ฉด POST ๋ฐฉ์์ด๋ผ ์๊ฐํ๋ฉด ์ฝ๋ค.
Unity์์ HTTP ํต์ ์ ํ ๋๋ UnityWebRequest ๋ฅผ ์ฌ์ฉํ๋ค.
UnityWebRequest ์์ Get ๋ฉ์๋์ Post ๋ฉ์๋๋ฅผ ๊ฐ๋จํ๊ฒ ์ ๊ณตํ๋ค.
์ด ๋, Json ํ์์ ๋ฐ์ดํฐ๋ก ํต์ ํ๋ค๋ฉด JsonConvert.SerializeObject(๊ฐ์ฒด) or JsonConvert.DeserializeObject<๊ฐ์ฒดํ> ๊ณผ์ ์ผ๋ก ๋ณํ์์ ์ด ํ์ํ๋ค.
1) UnityWebReqeust.Get
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
public class MyBehaviour : MonoBehaviour {
void Start() {
StartCoroutine(GetText());
}
IEnumerator GetText() {
UnityWebRequest www = UnityWebRequest.Get("https://www.my-server.com");
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success) {
Debug.Log(www.error);
}
else {
// Show results as text
Debug.Log(www.downloadHandler.text);
// Or retrieve results as binary data
byte[] results = www.downloadHandler.data;
}
}
}
UnityWebRequest.Get ์ผ๋ก url์ ์ ๋ณด๋ฅผ ์์ฒญํ ๋ชจ์ต์ด๋ค.
๋ฐ์์จ ๊ฒฐ๊ณผ๊ฐ์ ์ฝ๋ ๋ฒํผ์ ์ ์ฅํ๊ณ ์ฌ์ฉํ๊ธฐ ์ํด downloadHandler ๋ฅผ ์ฌ์ฉํ๋ค.
2) UnityWebRequest.Post
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
using System.Collections.Generic;
public class MyBehavior : MonoBehaviour {
void Start() {
StartCoroutine(Upload());
}
IEnumerator Upload() {
List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
formData.Add(new MultipartFormDataSection("field1=foo&field2=bar"));
formData.Add(new MultipartFormFileSection("my file data", "myfile.txt"));
UnityWebRequest www = UnityWebRequest.Post("https://www.my-server.com/myform", formData);
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success) {
Debug.Log(www.error);
}
else {
Debug.Log("Form upload complete!");
}
}
}
UnityWebRequest.Post ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๋ค.
๋ฐ์ดํฐ๋ List<IMultipartFormSection> ๋ฅผ ์์ฑํ์ฌ Post ๋ฉ์๋ ์ธ์๋ก ๋ณด๋ธ๋ค.
์ด ๋, ํ์ผ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋๋ MultipartFormFileSection, ํ์ผ์ด ์๋ ์ผ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋๋ MultipartFormDataSection ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค.
* ์ฐธ๊ณ
'๐ฎ Unity Study > Unity' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Unity] Asset, Library ์ ํ ๊ธฐ์ค (0) | 2023.08.19 |
---|---|
[Unity] ํ๋ก์ ํธ ์ฑ๋ฅ ํ์ธ ์งํ, FPS(Frame Per Second) (0) | 2023.08.19 |
[Unity Associate Programmer] ์ ๋ํฐ ์ธ์ฆ์ํ ๊ณต๋ถ ๋ฐ ํฉ๊ฒฉ ํ (2) | 2023.05.31 |
[Unity Associate Programmer ์๊ฒฉ์ฆ ์ค๋น] ์ด๋ก ๊ฐ๋ ์ ๋ฆฌ (0) | 2023.05.28 |
[Unity Associate Programmer ์๊ฒฉ์ฆ ์ค๋น] ํด์ฆ ์ค๋ต๋ ธํธ (0) | 2023.05.28 |