IEnumerator SendGetRequest(string requestURL, Action <HTTPResponse> success, Action fail)
    {
        using (UnityWebRequest www = UnityWebRequest.Get(HTTPNetworkConstant.serverURL + requestURL))
        {
            yield return(www.SendWebRequest());

            long code = www.responseCode;
            HTTPResponseMessage message = JsonUtility.FromJson <HTTPResponseMessage>(www.downloadHandler.text);

            if (www.isNetworkError)
            {
                NetworkErrorHandler();
                fail();
            }
            else if (www.isHttpError)
            {
                HTTPErrorHandler(code, message.message);
                fail();
            }
            else
            {
                Dictionary <string, string> headers = www.GetResponseHeaders();
                HTTPResponse response = new HTTPResponse(code, message.message, headers);
                success(response);
            }
        }
    }
Example #2
0
    //Dectinary
    IEnumerator SendPostRequest(string data, string requestURL, Action <HTTPResponse> success, Action fail)
    {
        //서버와 약속한 건 post이지만 현재는 문제가 많아 put으로 선언
        //using 문으로 선언하여 동작하는 범위를 지정할 수 있다.
        using (UnityWebRequest www = UnityWebRequest.Put(HTTPNetworkConstant.serverURL + requestURL, data))
        {
            www.method = "Post";
            www.SetRequestHeader("Content-Type", "application/json");

            string sid = PlayerPrefs.GetString("sid", "");
            {
                if (sid != "")
                {
                    www.SetRequestHeader("Set-Cookie", sid);
                }
            }
            //보내기, sendWebRequest를 하면서 다른일을 하게 만들어줌
            yield return(www.SendWebRequest());

            long code = www.responseCode; //www.responseCode는 long 타입 , 응답에대한 코드
            HTTPResponseMessage message = JsonUtility.FromJson <HTTPResponseMessage>(www.downloadHandler.text);

            // 서버 > 클라이언트로 응답(Response) 메시지 도착
            if (www.isNetworkError)
            {
                NetworkErrorHandler();
                fail();
            }
            else if (www.isHttpError)
            {
                HTTPErrorHandler(code, message.message);
                fail();
            }
            else
            {
                Dictionary <string, string> header = www.GetResponseHeaders();// 헤더 정보, 세션아이디 포함
                HTTPResponse response = new HTTPResponse(code, message.message, header);
                success(response);
            }
        }
    }
    IEnumerator SendPostRequest(string data, string requestURL, Action <HTTPResponse> success, Action fail)
    {
        using (UnityWebRequest www = UnityWebRequest.Put(HTTPNetworkConstant.serverURL + requestURL, data))
        {
            www.method = "Post";
            www.SetRequestHeader("Content-Type", "application/json");

            string sid = PlayerPrefs.GetString("sid", "");
            if (sid != "")
            {
                www.SetRequestHeader("Set-Cookie", sid);
            }

            yield return(www.SendWebRequest());

            long code = www.responseCode;
            HTTPResponseMessage message = JsonUtility.FromJson <HTTPResponseMessage>(www.downloadHandler.text);

            if (www.isNetworkError)
            {
                NetworkErrorHandler();
                fail();
            }
            else if (www.isHttpError)
            {
                HTTPErrorHandler(code, message.message);
                fail();
            }
            else
            {
                Dictionary <string, string> headers = www.GetResponseHeaders();
                HTTPResponse response = new HTTPResponse(code, message.message, headers);
                success(response);
            }
        }
    }