유니티에서 웹서버와 POST 통신하기

2021. 9. 30. 18:55개발/유니티

1. C#에서 post로 데이터 보내고 받기.

 

웹서버에서 post데이터 중 키가 a, b인 변수로 받은다음 json으로 리턴해주면 된다.

 

try를 쓴 이유는 네트워크 환경에 따라 제대로 작동하지 않는 경우가 있기 때문이다.

 

//예제

string PostData = "a=1&b=2"
StringBuilder dataParams = new StringBuilder();

HttpWebRequest request = null;
HttpWebResponse response = null;

try
{
    byte[] bytes = UTF8Encoding.UTF8.GetBytes(dataParams.ToString());
    request = (HttpWebRequest)WebRequest.Create(접속할 URL주소);
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
    request.Timeout = 1000;
    using(var stream = request.GetRequestStream())
    {
    	stream.Write(bytes, 0, bytes.Length);
        stream.Flush();
        stream.Close();
    }
    
    response = (HttpWebResponse)request.GetResponse();
    StreamReader reader = new StreamReader(response.GetResponseStream());
    string json = reader.ReadToEnd();
}
catch(WebException webExcp)
{
    WebExceptionStatus status = webExcp.Status;
    if(status == WebExceptionStatus.ProtocolError)
    {
    	HttpWebResponse httpResponse = (HttpWebResponse)webExcp.Response;
    }
}
catch(Exception e)
{
    throw e;
}

response.Close();
response.Dispose();
request.Abort();

 

웹서버와 통신할 수 있게되면, 꼭 tcp서버를 사용하지 않아도 왠만한 모바일 게임은 처리할 수 있게 된다.

 

원래는 모바일 서비스에 더 많이 쓰이지만, 코틀린이나 스위프트가 있는데 구지? C#을 쓸 일은 없어보인다.

 

물론 자마린이 있긴한데 이거 하는 분이 한국에 많나..?

 

결국 그나마 유니티 개발자인데 그렇다면 많이 쓸일이 있을지도