* 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 ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ค.
* ์ฐธ๊ณ
UnityWebRequest - Unity ๋งค๋ด์ผ
UnityWebRequest๋ HTTP ์์ฒญ์ ๊ตฌ์ฑํ๊ณ HTTP ๋ฆฌ์คํฐ์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ชจ๋์ ์์คํ ์ ์ ๊ณตํฉ๋๋ค. UnityWebRequest ์์คํ ์ ์ฃผ์ ๋ชฉํ๋ Unity ๊ฒ์์ด ์ต์ ์น ๋ธ๋ผ์ฐ์ ๋ฐฑ ์๋์ ์ํธ์์ฉํ ์ ์๋
docs.unity3d.com
HTTP ์๋ฒ์์ ํ ์คํธ ๋๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ(GET) - Unity ๋งค๋ด์ผ
ํ์ค HTTP๋ HTTPS ์น ์๋ฒ์์ ํ ์คํธ ๋ฐ์ดํฐ๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ์ ๊ฐ์ ๊ฐ๋จํ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํด์ ๊ฐ์ ธ์ค๋ ค๋ฉด UnityWebRequest.GET ํธ์ถ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด ํจ์๋ ๋จ์ผ ๋ฌธ์์ด์ ์ธ์๋ก ์ฌ์ฉํ๋ฉฐ
docs.unity3d.com
HTTP ์๋ฒ๋ก ์์ ๋ณด๋ด๊ธฐ(POST) - Unity ๋งค๋ด์ผ
HTML ์์์ผ๋ก ํฌ๋งท๋ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํ ๋ ๊ฐ์ง ๊ธฐ๋ณธ ํจ์๊ฐ ์์ต๋๋ค. WWW ์์คํ ์์ ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒฝ์ฐ ์๋์ WWWForm ์ฌ์ฉ์ ์ฐธ์กฐํ์ญ์์ค.
docs.unity3d.com
Unity - Scripting API: IMultipartFormSection
In order to provide a finer level of control for those wishing to generate multipart form data, but without forcing most users to refer to RFC 2388, Unity provides this simple interface which the UnityWebRequest API can use to serialize complex data into p
docs.unity3d.com
'๐ฎ 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 |