示例#1
0
    public static void SendMessage(HttpPacket httpPacket)
    {
        //当网络不可用时
        if (Application.internetReachability == NetworkReachability.NotReachable || !GameConfig.Inst.NetEnable)
        {
            if (httpPacket.errorHandler != null)
            {
                httpPacket.errorHandler("Internet Not Reachable");
            }
            DebugUtil.LogError("Internet Not Reachable");
            //UICommonLogic.Inst.ShowMessage("Internet Not Reachable");
            return;
        }
        ////未登陆或者Session过期
        //if (LoginManager.Inst.loginStatus == LoginManager.LoginStatus.LOGOUT && httpPacket.needSession)
        //{
        //    if (httpPacket.errorHandler != null)
        //    {
        //        httpPacket.errorHandler("has not login");
        //    }
        //    return;
        //}
        //if (LoginManager.Inst.loginStatus == LoginManager.LoginStatus.TOKEN_EXPIRED && httpPacket.needSession)
        //{
        //    EventDispatcher.TriggerEvent(EventKey.SessionExpiredOrEmpty, httpPacket);
        //    if (httpPacket.errorHandler != null)
        //    {
        //        httpPacket.errorHandler("token Expired");
        //    }
        //    Debug.LogError("token Expired");
        //    return;
        //}
        ////未登陆或者Session过期
        //if (LoginManager.Inst.loginStatus == LoginManager.LoginStatus.LOGINFAIL && httpPacket.needSession)
        //{
        //    if (httpPacket.errorHandler != null)
        //    {
        //        httpPacket.errorHandler("login status is failed");
        //    }
        //    return;
        //}

        Inst.CacheMessage(httpPacket);
        Inst.PostRequest();
    }
示例#2
0
    IEnumerator PostCoroutine(HttpPacket packet)
    {
        Debug.Log(string.Format("[HttpTool2] SendMessage : method:{0}", packet.body.method));
        Body   body      = packet.body;
        Header header    = packet.header != null?packet.header: Header.GetHeader();
        string bodyStr   = JsonConvert.SerializeObject(body);
        string headerStr = JsonConvert.SerializeObject(header.headers);

        DebugUtil.Log("++++++++++++++++HttpRequestTool, Url:  " + packet.body.url);
        DebugUtil.Log("HttpRequestTool, Body:  " + bodyStr);
        DebugUtil.Log("HttpRequestTool, Header:  " + headerStr);
        using (UnityWebRequest www = new UnityWebRequest(packet.body.url, UnityWebRequest.kHttpVerbPOST)) {
            UploadHandler uploaderHandler = new UploadHandlerRaw(CommonUtil.ToBytes(bodyStr));
            uploaderHandler.contentType = "application/json";            //application/json    、   application/octet-stream
            DownloadHandlerBuffer downHandler = new DownloadHandlerBuffer();
            www.uploadHandler   = uploaderHandler;
            www.downloadHandler = downHandler;
            SetHeader(www, header);

            www.timeout   = 8;
            _isRequesting = true;
            yield return(www.SendWebRequest());

            if (www.isNetworkError || www.isHttpError)
            {
                if (packet.errorHandler != null)
                {
                    DebugUtil.LogError("HttpRequestTool,url:{0},error:{1},responseCode:{2},isNetworkError:{3},isHttpError:{4}",
                                       packet.body.url, www.error, www.responseCode, www.isNetworkError, www.isHttpError);
                    packet.errorHandler(www.error);
                    //TODO:
                    //Session过期、未注册 在此处 发事件通知LoginManager
                    //if(packet.needSession)
                    //    EventDispatcher.TriggerEvent(EventKey.HTTPNeedSession, packet);
                    //LoginManager.Inst.loginStatus = LoginManager.LoginStatus.TOKEN_EXPIRED;
                }
            }
            else
            {
                string results = www.downloadHandler.text;
                try
                {
                    SimpleJSON.JSONNode jsonNode = SimpleJSON.JSONNode.Parse(results);
                    int code = jsonNode["code"];
                    if (code == (int)HttpResponseCode.SessinExpired)
                    {
                        EventUtil.EventDispatcher.TriggerEvent(EventKey.SessionExpiredOrEmpty, packet);
                    }

                    DebugUtil.Log("[HttpTool] results " + results.Length);
                    packet.handler(results);
                }
                catch (Exception e)
                {
                    if (packet.errorHandler != null)
                    {
                        DebugUtil.LogError("httpRequestTool www response error:" + e.StackTrace);
                        packet.errorHandler(string.Format("http receive data:{0},but error occour in sucess handler:{1}", results, e.ToString()));
                    }
                }
            }
            packet.handler = packet.errorHandler = null;
            _isRequesting  = false;
        }
        PostRequest();
    }