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(); }
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(); }