본문 바로가기
유니티 Unity/유니티 정보

유니티 HTTP 통신 구현 핵심 정리3 - UnityWebRequest 방식 GET/POST

by TODAYCODE 2021. 11. 28.
반응형

유튜브 영상으로도 볼 수 있습니다.

 

드디어 실제로 실무에서 많이 쓰이는 UnityWebRequest 방식을 활용한 HTTP 통신을 알아보자.

 

그 전에, HTTP 통신에 대한 기본적인 내용과 WWW 클래스를 통한 통신이 궁금하다면 이전글들을 확인해보면 된다.

WWW와 UnityWebRequest를 사용할때 공통부분은 www클래스 부분에서 설명했기 때문에, www방식에 관심이 없더라도 한번 읽고오는 것이 도움이 될 것이다.

 

유니티로 HTTP 통신 구현하는 방법 핵심 정리1

그동안 혼자 프로젝트를 진행할 때는 그냥 포톤을 써버렸기 때문에 크게 네트워크에 신경을 쓰지 않았었다. 그런데 회사라는 조직에서 공동의 프로젝트를 진행하다보니 내가 해본적 없는 부분

coding-of-today.tistory.com

 

 

유니티로 HTTP 통신 구현하는 방법 핵심 정리2 - www 방식 GET/POST

유니티로 HTTP 통신 구현하는 방법 핵심 정리1 그동안 혼자 프로젝트를 진행할 때는 그냥 포톤을 써버렸기 때문에 크게 네트워크에 신경을 쓰지 않았었다. 그런데 회사라는 조직에서 공동의 프로

coding-of-today.tistory.com

 

UnityWebRequest 클래스를 사용하기 위해서 상단에

using UnityEngine.Networking; 을 적어주는 것을 잊지 말자.

이번에도 곧장 예제를 보면서 사용방법을 익혀보도록 하자.

 

UnityWebRequest로 HTTP 통신 구현하기

1. GET 방식


이전글에서 WWW로 통신을 구현해봤다면 거의 똑같은 방식으로 진행된다.

다만 차이점이라면, WWW가 쓰이던 곳을 UnityWebRequest만 바꿔주면 된다.

그리고 UnityWebRequest의 경우는 GET인지 POST인지를 직관적으로 알 수 있어서 실수할 일이 더 적다.

 

실습을 진행하는 사이트는 이전 글에서도 소개했던, 네오플을 사용했다.

 

Neople Developers

## 참고 사항 >- [타임라인 코드](/contents/guide/pages/all#던파-타임라인-코드) 다중 입력 시 콤마(,)를 이용해서 구분 처리   ex) /timeline?code=101,102,103 - startDate, endDate 요청 변수 사용 예시   ex) /timeline?

developers.neople.co.kr

사용법을 모르겠다면 이전글을 살펴보고 오자.

 

아무튼 이번에도 코드를 적어서 테스트를 해보면 통신이 잘 이뤄진다는 것을 확인 할 수 있을 것이다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;	// UnityWebRequest사용을 위해서 적어준다.

public class NetworkTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine(UnityWebRequestGETTest());
    }

    IEnumerator UnityWebRequestGETTest()
    {
        // GET 방식
        string apikey = "발급받은 API키를 넣는다.";
        string url = "https://api.neople.co.kr/df/servers?apikey=" + apikey;

		// UnityWebRequest에 내장되있는 GET 메소드를 사용한다.
        UnityWebRequest www = UnityWebRequest.Get(url);

        yield return www.SendWebRequest();  // 응답이 올때까지 대기한다.

        if (www.error == null)  // 에러가 나지 않으면 동작.
        {
            Debug.Log(www.downloadHandler.text);
        }
        else
        {
            Debug.Log("error");
        }
    }
}

WWW와 다소 차이점이 있다면, 응답이 downloadHandler를 통해서 저장되므로,

출력을 하고자한다면 downloadHandler를 호출해서 사용하면 된다.

제대로 동작했다면 이전 글과 동일하게 응답이 출력되었을 것이다.

 

2. POST 방식


POST 방식을 사용하고자 한다면, url 주소 말고도 같이 넘겨줘야할 정보들이 있으므로 WWWForm을 사용한다.

자세한 내용은 이전글을 참고하자.

 

예제 코드를 살펴보자. 거의 동일하긴 하지만, POST 통신을 위해서 몇가지 추가된 부분들이 존재한다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;	// UnityWebRequest사용을 위해서 적어준다.

public class NetworkTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine(UnityWebRequestPOSTTEST());
    }

    IEnumerator UnityWebRequestPOSTTEST()
    {
        string url = "POST 통신을 사용할 서버 주소를 입력";
        WWWForm form = new WWWForm();
        string id = "아이디";
        string pw = "비밀번호";
        form.AddField("Username", id);
        form.AddField("Password", pw);
        UnityWebRequest www = UnityWebRequest.Post(url, form);  // 보낼 주소와 데이터 입력

        yield return www.SendWebRequest();  // 응답 대기

        if (www.error == null)
        {
            Debug.Log(www.downloadHandler.text);    // 데이터 출력
        }
        else
        {
            Debug.Log("error");
        }
    }
}

서버 url과 아이디/비밀번호 등 정보를 함께 전송해주면 통신이 제대로 이뤄질 것이다.

 


 

이로써, UnityWebRequest 클래스를 활용한 HTTP 통신도 살펴보았다.

실무에서는 훨씬 더 복잡한 방식으로 쓰일 것이기 때문에 기본적인 내용을 생각하면 될 것 같다.

해당 내용이 조금이라도 필요한 사람들에게 도움이 되었으면 한다.

 

 

 

반응형

댓글