유니티에서 Web Text 긁어오기(3)
안녕하세요.
유니티 웹 통신하기 세번째 시간. 저번에 예고한대로 Post 방식 사용법에 대해서 짧은 지식을 뱉어보겠습니다. 먼저 WWW클래스 부터 보겠습니다. 저는 WWW클래스를 Post를 쓸 때는 WWWForm 작성을 먼저하고 폼을 실어 날리는 방식으로 했습니다. WWW클래스 메타데이터를 까보시면 5가지 활용법이 있습니다.
1.public WWW(string url)
2.public WWW(string url, WWWForm form)
3.public WWW(string url, byte[] postData)
4.public WWW(string url, byte[] postData, Hashtable headers)
5.public WWW(string url, byte[] postData, Dictionary<string, string> headers)
1번은 저번 시간에 활용해봤습니다. 나머지 써보겠습니다. 2번은 WWWForm작성해서 해주시면 됩니다.
WWWForm wF = new WWWForm();
wF.AddField("항목",값);
형식으로 쭉 폼 채워주고 날리시면 되겠습니다. 3번,4번 방법도 매개 변수 맞춰서 날려주시면 되겠습니다. 오늘 쓰는 건 5번 방식을 기록으로 남기려고 쓰는 거나 마찬가지인데요. 헤더를 직접 만들고 담아서 날리는 방식입니다. 이 방식을 왜 쓰게됐냐면 유니티로 만든 앱을 모바일 기기에서 웹 데이터를 쏘면 헤더가 단 하나만 담겨서 날아갑니다.
("Content-Type","application/x-www-form-urlencoded") 이렇게만 담겨서 날아갑니다. 그래서 헤더 정보가 필요할 때 애를 먹을 수 있습니다. 이거 때문에 꽤 고생했습니다. 활용 예시 보시겠습니다.
1 2 3 4 5 6 7 8 9 10 | Dictionary<string, string> headers = new Dictionary<string, string>(); headers.Add("User-Agent", "Test"); //..... //... //. using (WWW www = new WWW("http://unitytip.tistory.com/", null, headers)) { yield return www; Debug.Log(www.text); } | cs |
이렇게 해서 헤더 값을 담아서 막힌 문제를 클리어 했었습니다.
UnityWebRequest에는 아예 Post가 있습니다. UnityWebRequest.Post도 까보시면 5가지가 있습니다.
1.Post(string uri, string postData)
2.Post(string uri, WWWForm formData)
3.Post(string uri, List<IMultipartFormSection> multipartFormSections)
4.Post(string uri, Dictionary<string, string> formFields)
5.Post(string uri, List<IMultipartFormSection> multipartFormSections, byte[] boundary)
쉬워보이거나 필요한 방법대로 매개 변수 맞춰서 쏘시면 될 것 같습니다.
위에서 썼던 Dictionary를 그대로 쓰면 4번 형식이 됩니다. WWWForm방법으로 예시를 작성해보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | WWWForm wF = new WWWForm(); wF.AddField("ID", "dnrkckzk"); UnityWebRequest request = new UnityWebRequest(); using (request = UnityWebRequest.Post(("http://unitytip.tistory.com/"), wF)) { yield return request.SendWebRequest(); if (request.isNetworkError) { Debug.Log(request.error); } else { Debug.Log(request.downloadHandler.text); Byte[] results = request.downloadHandler.data; } } | cs |
Post 받을 내용은 전혀 없지만 그냥 예를 들기 위해 ID로 만들고 던졌습니다. 이런식으로 WWWForm을 작성해서 던질 수도 있습니다.
지금까지 유니티 웹 데이터 얻어오기를 포스팅 했습니다. 대단한 내용은 아닌데 처음 해보기도 했고, 담에 또 하게 된다면 도움 받을 수 있지 않을까 싶어서 기록하는 차원에서 남겼습니다. 다음에는 아마도 Unity메뉴얼 보면서 유용하다고 생각이 들거나 몰랐던 내용들을 포스팅하는 것이 어떨까 생각하고 있습니다. 뭔가 새로운 것을 써보게 된다면 그걸 포스팅 할 수도 있습니다. 지식이 깊지 못한 초보라서 용어가 틀릴 수도 있습니다. 하하 혹시나 누군가에게 도움이 됐길 바라며 마칩니다.
'Unity Tip' 카테고리의 다른 글
UGUI버튼 스크립트로 메소드 연결하기 (0) | 2018.04.15 |
---|---|
EventSystem.current.currentSelectedGameObject (0) | 2018.04.07 |
유니티에서 Web Text 긁어오기(2) (0) | 2018.04.04 |
유니티에서 Web Text 긁어오기(1) (1) | 2018.04.03 |
Scroll Rect 맨 처음 부터 나오게 설정하기.(※요약 있음※) (3) | 2018.04.01 |