dnrkckzk 초보 유니티 개발자 개발하면서 겪는 어려움들을 해결했을 때, 인터넷 돌아다니는 흥미 있는 글 있을 때, 저장하고 공유하기 위한 공간.

카테고리

전체보기 (40)
Unity Tip (29)
뇌를 자극하는 C# 5.0.. (9)
C# (1)
Total33,698
Today49
Yesterday75

 안녕하세요.

 유니티 웹 통신하기 세번째 시간. 저번에 예고한대로 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<stringstring> headers = new Dictionary<stringstring>();
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메뉴얼 보면서 유용하다고 생각이 들거나 몰랐던 내용들을 포스팅하는 것이 어떨까 생각하고 있습니다. 뭔가 새로운 것을 써보게 된다면 그걸 포스팅 할 수도 있습니다. 지식이 깊지 못한 초보라서 용어가 틀릴 수도 있습니다. 하하 혹시나 누군가에게 도움이 됐길 바라며 마칩니다.

Posted by dnrkckzk

댓글을 달아 주세요

최근에 달린 댓글

최근에 받은 트랙백

글 보관함