Exemple #1
0
    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");
        }
    }
Exemple #2
0
    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);
    }
Exemple #3
0
 /// <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;
     }
 }
Exemple #4
0
    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);
    }
Exemple #5
0
 /// <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);
             }
         }
     }
 }
Exemple #6
0
 public static HttpPackage Instance()
 {
     if (instance == null)
     {
         instance = new HttpPackage();
     }
     return(instance);
 }
Exemple #7
0
 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));
     }
 }
Exemple #8
0
 /// <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);
         }
     }
 }
Exemple #9
0
    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;
    }
Exemple #10
0
    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());
        }
    }
Exemple #11
0
    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");
        }
    }
Exemple #12
0
    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);
    }
Exemple #13
0
 public void Ignore()
 {
     mCurrrentRequest = null;
     mSuspend         = false;
 }
Exemple #14
0
    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;
    }
Exemple #15
0
 public void DisConnect()
 {
     mIsConnected     = false;
     mCurrrentRequest = null;
     mActionList.Clear();
 }
Exemple #16
0
        /// <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));
        }
Exemple #17
0
 /// <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);
         }
     }
 }
Exemple #18
0
 /// <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);
             }
         }
     }
 }
Exemple #19
0
 /// <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;
     }
 }