public static IEnumerator GetRequest(string url, object ud, int tag, INetCallback callback, IHttpCallback httpCallback, bool showLoading) { DateTime start = DateTime.Now; HttpPackage hp = new HttpPackage(); hp.w = new WWW(url); hp.Tag = tag; hp.FuncCallback = callback; if (RequestNotify != null && showLoading) { RequestNotify(Net.Status.eStartRequest); } yield return hp.w; if (RequestNotify != null && showLoading) { RequestNotify(Net.Status.eEndRequest); } if(null != httpCallback) { TimeSpan tsStart = new TimeSpan(start.Ticks); TimeSpan tsEnd = new TimeSpan(DateTime.Now.Ticks); TimeSpan ts = tsEnd.Subtract(tsStart).Duration(); if(ts.Seconds > OVER_TIME) { hp.overTime = true; } httpCallback.OnHttpRespond(hp, ud); } else { Debug.Log("no http callback"); } }
public bool DoAction(int actionId, object userData, bool bShowLoading = true) { if (!IsConnected()) { return(false); } GameAction gameAction = ActionFactory.Instance.Create(actionId); if (gameAction == null) { GameDebug.LogError(string.Format("Not found {0} of GameAction object.", actionId)); return(false); } HttpPackage httpPackage = new HttpPackage(); httpPackage.ActionId = gameAction.ActionId; httpPackage.Action = gameAction; httpPackage.UserData = userData; httpPackage.ShowLoading = bShowLoading; httpPackage.PostData = CompositeData(mSessionId, (uint)gameAction.ActionId, gameAction.GetRequestMsg(userData)); mActionList.Add(httpPackage); return(true); }
/// <summary> /// http respond /// </summary> /// <param name="package"></param> /// <param name="userdata"></param> public void OnHttpRespond(HttpPackage package, object userdata) { if (package.error != null) { OnNetError(package.Tag, package.error.ToString()); } else if (package.overTime) { OnNetTimeOut(package.Tag); } else { NetReader reader = new NetReader(); reader.pushNetStream(package.buf, NetworkType.Http); ServerResponse.ResponseData data = null; bool bRet = true; if (reader.ActionId != 0)//获取服务器列表比较特殊没有协议头 { if (CommonCallback != null) { bRet = CommonCallback(reader); } } if (bRet) { data = ServerResponse.Instance.GetData(reader); ProcessBodyData(data, userdata, package.FuncCallback); } reader = null; } }
private IEnumerator HttpGetRequest(GameAction gameAction, ActionParam actionParam, IHeadFormater formater, bool showLoading) { string url = NetWriter.GetUrl(); byte[] postData = gameAction.Send(actionParam); DateTime start = DateTime.Now; HttpPackage httpPackage = new HttpPackage(); httpPackage.WwwObject = NetWriter.IsGet ? new WWW(string.Format("{0}?{1}", url, Encoding.UTF8.GetString(postData))) : new WWW(url, postData); httpPackage.ActionId = gameAction.ActionId; httpPackage.Action = gameAction; httpPackage.Reader = new NetReader(formater); if (RequestNotify != null && showLoading) { RequestNotify(Net.Status.eStartRequest); } yield return(httpPackage.WwwObject); if (RequestNotify != null && showLoading) { RequestNotify(Net.Status.eEndRequest); } TimeSpan tsStart = new TimeSpan(start.Ticks); TimeSpan tsEnd = new TimeSpan(DateTime.Now.Ticks); TimeSpan ts = tsEnd.Subtract(tsStart).Duration(); if (ts.Seconds > OVER_TIME) { httpPackage.IsOverTime = true; } OnHttpRespond(httpPackage); }
/// <summary> /// http respond /// </summary> /// <param name="package"></param> public void OnHttpRespond(HttpPackage package) { if (package.error != null) { OnNetError(package.ActionId, package.error); } else if (package.IsOverTime) { OnNetTimeOut(package.ActionId); } else { NetReader reader = package.Reader; byte[] buffBytes = package.GetResponse(); if (reader.pushNetStream(buffBytes, NetworkType.Http, NetWriter.ResponseContentType)) { if (reader.Success) { OnRespond(package); } else { OnNetError(package.ActionId, reader.Description); } } } }
public static HttpPackage Instance() { if (instance == null) { instance = new HttpPackage(); } return(instance); }
static int OnHttpRespond(IntPtr L) { try { ToLua.CheckArgsCount(L, 2); Net obj = (Net)ToLua.CheckObject <Net>(L, 1); HttpPackage arg0 = (HttpPackage)ToLua.CheckObject <HttpPackage>(L, 2); obj.OnHttpRespond(arg0); return(0); } catch (Exception e) { return(LuaDLL.toluaL_exception(L, e)); } }
/// <summary> /// http respond /// </summary> /// <param name="package"></param> /// <param name="userdata"></param> public void OnHttpRespond(HttpPackage package, object userdata) { if (package.error != null) { OnNetError(package.ActionId, package.error); } else if (package.IsOverTime) { OnNetTimeOut(package.ActionId); } else { NetReader reader = package.Reader; byte[] buffBytes = package.GetResponse(); if (reader.pushNetStream(buffBytes, NetworkType.Http)) { OnRespond(package); } } }
private IEnumerator HttpPostRequest() { mActionDoing = true; mCurrrentRequest.WwwObject = new WWW(strUrl, mCurrrentRequest.PostData); DateTime start = DateTime.Now; if (RequestNotify != null && mCurrrentRequest.ShowLoading) { RequestNotify(Net.Status.eStartRequest); } yield return(mCurrrentRequest.WwwObject); if (RequestNotify != null && mCurrrentRequest.ShowLoading) { RequestNotify(Net.Status.eEndRequest); } //TimeSpan tsStart = new TimeSpan(start.Ticks); //TimeSpan tsEnd = new TimeSpan(DateTime.Now.Ticks); //TimeSpan ts = tsEnd.Subtract(tsStart).Duration(); //if (ts.Seconds > OVER_TIME) //{ // mCurrrentRequest.IsOverTime = true; //} if (!OnHttpRespond()) { mSuspend = true; } else { mCurrrentRequest = null; } mActionDoing = false; }
void Update() { if (!mIsConnected) { return; } if (mSuspend) { return; } // 先放到这里 mHearbeatTimer += (uint)(Time.deltaTime * 1000.0f); if (mHearbeatTimer > 1000 * 60) { mHearbeatTimer = 0; Net.Instance.DoAction(6, null, false); } if (mActionDoing) { return; } if (mCurrrentRequest == null) { if (mActionList.Count != 0) { mCurrrentRequest = mActionList[0]; mActionList.RemoveAt(0); } } if (mCurrrentRequest != null) { StartCoroutine(HttpPostRequest()); } }
public static IEnumerator GetRequest(string url, object ud, int tag, INetCallback callback, IHttpCallback httpCallback, bool showLoading) { DateTime start = DateTime.Now; HttpPackage hp = new HttpPackage(); hp.w = new WWW(url); hp.Tag = tag; hp.FuncCallback = callback; if (RequestNotify != null && showLoading) { RequestNotify(Net.Status.eStartRequest); } yield return(hp.w); if (RequestNotify != null && showLoading) { RequestNotify(Net.Status.eEndRequest); } if (null != httpCallback) { TimeSpan tsStart = new TimeSpan(start.Ticks); TimeSpan tsEnd = new TimeSpan(DateTime.Now.Ticks); TimeSpan ts = tsEnd.Subtract(tsStart).Duration(); if (ts.Seconds > OVER_TIME) { hp.overTime = true; } httpCallback.OnHttpRespond(hp, ud); } else { Debug.Log("no http callback"); } }
private IEnumerator HttpGetRequest(GameAction gameAction, object userData, IHeadFormater formater, bool showLoading) { string url = NetWriter.GetUrl(); byte[] postData = gameAction.Send(userData); DateTime start = DateTime.Now; HttpPackage httpPackage = new HttpPackage(); httpPackage.WwwObject = new WWW(url, postData); httpPackage.ActionId = gameAction.ActionId; httpPackage.Action = gameAction; httpPackage.Reader = new NetReader(formater); httpPackage.UserData = userData; if (RequestNotify != null && showLoading) { RequestNotify(Net.Status.eStartRequest); } yield return httpPackage.WwwObject; if (RequestNotify != null && showLoading) { RequestNotify(Net.Status.eEndRequest); } TimeSpan tsStart = new TimeSpan(start.Ticks); TimeSpan tsEnd = new TimeSpan(DateTime.Now.Ticks); TimeSpan ts = tsEnd.Subtract(tsStart).Duration(); if (ts.Seconds > OVER_TIME) { httpPackage.IsOverTime = true; } OnHttpRespond(httpPackage, userData); }
public void Ignore() { mCurrrentRequest = null; mSuspend = false; }
private IEnumerator RequestSession() { if (RequestNotify != null) { RequestNotify(Status.eStartRequest); } string post_data = "request--session"; WWW wwwObject = new WWW(strUrl, Encoding.ASCII.GetBytes(post_data)); yield return(wwwObject); string respondmsg = Encoding.ASCII.GetString(wwwObject.bytes); string[] data_vec = respondmsg.Split(new char[] { '&' }); uint sign = 0; for (int i = 0; i < data_vec.Length; i++) { string[] key_values = data_vec[i].Split(new char[] { '=' }); if (key_values[0] == "respond--session") { sign++; } else if (key_values[0] == "sessionid") { sign++; mSessionId = System.Convert.ToUInt32(key_values[1]); } else if (key_values[0] == "key") { sign++; mKey = key_values[1]; } } if (sign == 3) { mIsConnected = true; mSuspend = false; if (NetConnectOkCallback != null) { NetConnectOkCallback(); } } else { foreach (HttpPackage package in mActionList) { package.Action.OnError(package.UserData); } mActionList.Clear(); mCurrrentRequest = null; if (NetConnectFailedCallback != null) { NetConnectFailedCallback(); } } if (RequestNotify != null) { RequestNotify(Status.eEndRequest); } mIsConnecting = false; }
public void DisConnect() { mIsConnected = false; mCurrrentRequest = null; mActionList.Clear(); }
/// <summary> /// 适应于unilight服务器的底层消息发送 /// </summary> /// <param name="url"></param> /// <param name="data"></param> /// <param name="do">发送的消息类型,默认为<paramref name="data"/>的类型名</param> /// <returns></returns> protected WWW SendToHandle(string url, object data, string @do = null) { if (@do == null && data != null) { @do = data.GetType().FullName; } // 消息包装 var cmd = new HttpPackage() { @do = @do, data = data, gameid = GameID, zoneid = ZoneID, uid = UID, sid = SID, unigame_plat_login = PlatToken, unigame_plat_timestamp = DateTime.Now.ToUnixTime(), }; var json = Common.Json.Serialize(cmd); // 签名 var query = new UriQuery(); if (!string.IsNullOrEmpty(PlatKey)) { string md5str = Common.MD5.ComputeHashString(json + cmd.unigame_plat_timestamp.ToString() + PlatKey); //Debug.LogError("json str is " + json); //Debug.LogError("unigame_plat_timestamp str is " + cmd.unigame_plat_timestamp.ToString()); //Debug.LogError("PlatKey str is " + PlatKey); //Debug.LogError("md5 str is " + md5str); query["unigame_plat_sign"] = md5str; } if (Compress != HttpCompress.None) { query["compress"] = Compress.ToString(); } if (query.Any()) { url += "?" + query.ToString(); } if (OnRequest != null) { OnRequest(this, new HttpRequestEventArgs(url, json)); } // 数据压缩 byte[] post = null; switch (Compress) { case HttpCompress.None: post = Common.Encoding.GetBytes(json); break; case HttpCompress.gzip: case HttpCompress.flate: case HttpCompress.zlib: case HttpCompress.lzw: default: throw new NotSupportedException(Compress.ToString()); } // 网络发送 return(new WWW(url, post, HeaderJson)); }
/// <summary> /// http respond /// </summary> /// <param name="package"></param> /// <param name="userdata"></param> public void OnHttpRespond(HttpPackage package, object userdata) { if (package.error != null) { OnNetError(package.ActionId, package.error); } else if (package.IsOverTime) { OnNetTimeOut(package.ActionId); } else { NetReader reader = package.Reader; byte[] buffBytes = package.GetResponse(); if (reader.pushNetStream(buffBytes, NetworkType.Http)) { OnRespond(package); } } }
/// <summary> /// http respond /// </summary> /// <param name="package"></param> public void OnHttpRespond(HttpPackage package) { if (package.error != null) { OnNetError(package.ActionId, package.error); } else if (package.IsOverTime) { OnNetTimeOut(package.ActionId); } else { NetReader reader = package.Reader; byte[] buffBytes = package.GetResponse(); if (reader.pushNetStream(buffBytes, NetworkType.Http, NetWriter.ResponseContentType)) { if (reader.Success) { OnRespond(package); } else { OnNetError(package.ActionId, reader.Description); } } } }
/// <summary> /// http respond /// </summary> /// <param name="package"></param> /// <param name="userdata"></param> public void OnHttpRespond(HttpPackage package, object userdata) { if (package.error != null) { OnNetError(package.Tag, package.error.ToString()); } else if (package.overTime) { OnNetTimeOut(package.Tag); } else { NetReader reader = new NetReader(); reader.pushNetStream(package.buf, NetworkType.Http); ServerResponse.ResponseData data = null; bool bRet = true; if (reader.ActionId != 0)//��ȡ�������б�Ƚ�����û��Э��ͷ { if (CommonCallback != null) { bRet = CommonCallback(reader); } } if (bRet) { data = ServerResponse.Instance.GetData(reader); ProcessBodyData(data, userdata, package.FuncCallback); } reader = null; } }