본문 바로가기
C#

[C#][Unity] Http 통신 하기!!

by teamnova 2021. 10. 4.
728x90

안녕하세요!! 오늘은 유니티상에서 Http 통신을 하는법에 대해 포스팅 해보도록 하겠습니다!!

 

유니티에서 서버로 양식을 보내는 방법은 두가지 종류가 있는데요.

IMultipartFormSection 방식

WWWForm 사용(레거시 함수)  방식

이렇게 두가지가 존재합니다!!

 

오늘은 그중에 

 

WWWForm 사용(레거시 함수) 방식

에 대해 포스팅 해보도록 하겠습니다!

 

우선 공식 홈페이지에서 어떤 식으로 통신을 하게 되는지 확인해 보도록 하겠습니다!!

https://docs.unity3d.com/kr/2018.4/Manual/UnityWebRequest-SendingForm.html

 

HTTP 서버로 양식 보내기(POST) - Unity 매뉴얼

HTML 양식으로 포맷된 서버에 데이터를 전송하기 위한 두 가지 기본 함수가 있습니다. WWW 시스템에서 마이그레이션하는 경우 아래의 WWWForm 사용을 참조하십시오.

docs.unity3d.com

공식 홈페이지에서의 설명은 이렇게 되어있는데요.  설명으론 알아보기힘드니 코드를 통해서 알아보도록 하겠습니다!

 

using UnityEngine;
using System.Collections;
 
public class MyBehavior : public MonoBehaviour {
    void Start() {
        StartCoroutine(Upload());
    }
 
    IEnumerator Upload() {
        WWWForm form = new WWWForm();
        form.AddField("myField", "myData");
 
        UnityWebRequest www = UnityWebRequest.Post("http://www.my-server.com/myform", form);
        yield return www.SendWebRequest();
 
        if(www.isNetworkError || www.isHttpError) {
            Debug.Log(www.error);
        }
        else {
            Debug.Log("Form upload complete!");
        }
    }
}

 

기본적으로 HTTP 통신을 하게 되는 코드는 이렇습니다!!

 

윗줄부터 천천히 보면서 내려가보록 하죠.

처음 부분은 유니티의 Start() 생명주기가 시작함과 동시에 코루틴을 실행하는 코드 입니다.

여기에서 코루틴이란 실행을 일시 정지하고 유니티에서 제어권을 갖게되는 함수입니다.

하지만 이번지간은 코루틴에대한 포스팅이 아니니 간단하게 어디에 쓰이는지 요약하자면 대기시간이 필요한 작업이나. 비동기 작업 등에서 사용했을때 좋은 효율을 보여주는 함수입니다.

 

다시 코드로 넘어가서.

 

이부분이 코루틴의 실행 부분입니다!!

 

WWWForm 오브젝트를 생성해서 form 에 생성된 원시데이터를 연결하고

from.AddField(); 함수를 통해 데이터 값을 넣어줬습니다.

 

 

 

데이터를 넣어 준 후 UnityWebRequest에 연결된 오브젝트에 따라 UnityWebRequest.POST 를 호출하여 HTTP 통신을 진행 하게됩니다.

 

 

통신 후 리턴 받은 데이터를 통해 HTTP 통신이 정상적으로 진행 됐는지에 대한 코드입니다.

 

NetworkError 가 있다면 에러메세지를 띄우고

 

통신이 정상적으로 잘 됐다면!  "Form upload complete!" 라는  메세지가 LOG 창에 뜨게 될 것입니다!

 

네 여기까지 유니티에서 HTTP 통신코드를 어떻게 만들어서 사용 할 지에 대해 알아봤는데요.

 

서버에통신을 할때 자주 사용되는 코드이기 때문에 함수화하여서 잘만들어 놓는다면 계속 가져다 쓰기 좋은 코드가 될것입니다!

 

이 포스팅은 스틱코드의 아래 글을 참고하여 만들어 졌습니다!

 

https://stickode.com/detail.html?no=2505