예제 #1
0
        /// <summary>
        /// get请求
        /// </summary>
        /// <typeparam name="T">返回类型模型</typeparam>
        /// <param name="url">请求地址</param>
        /// <param name="par">请求参数</param>
        /// <param name="callBack">成功回调</param>
        /// <param name="feild">失败回调</param>
        /// <returns></returns>
        public Thread get <T>(String url, object par, NetworkCallBack <T> callBack, NetworkFeild feild)
        {
            Thread t = new Thread(new ThreadStart(() =>
            {
                String geturl;
                if (par != null)
                {
                    geturl = MapUtil.ModelToUriParam(par, url);
                }
                else
                {
                    geturl = url;
                }
                if (!string.IsNullOrEmpty(SettingMenager.shard.token))
                {
                    if (!httpClient.DefaultRequestHeaders.Contains("imToken"))
                    {
                        httpClient.DefaultRequestHeaders.Add("imToken", SettingMenager.shard.token);
                    }
                }
                try
                {
                    _ = httpClient.GetAsync(geturl).ContinueWith(async res =>
                    {
                        var result = res.Result;
                        if (result.StatusCode == HttpStatusCode.OK)
                        {
                            var body = result.Content.ReadAsStringAsync().ConfigureAwait(true).GetAwaiter().GetResult();
                            callBack(JsonConvert.DeserializeObject <T>(body));
                            return;
                        }
                        else if (result.StatusCode == HttpStatusCode.NotImplemented)
                        {
                            feild(501);
                            throw new ChangLiaoException("你还没有登录");
                        }
                        else if (result.StatusCode == HttpStatusCode.BadGateway)
                        {
                            feild(502);
                            throw new ChangLiaoException("身份验证失败");
                        }
                        else
                        {
                            feild((int)result.StatusCode);
                            throw new ChangLiaoException("链接服务器失败");
                        }
                    });
                }
                catch (Exception e)
                {
                }
                finally
                {
                }
            }));

            t.IsBackground = true;
            t.Start();
            return(t);
        }
예제 #2
0
    public void chooseSeat(int seatId, NetworkCallBack callBack)
    {
        NetWorkServices  netWorkServices = NetWorkServices.getInstance();
        ChooseSeatPacket packet          = new ChooseSeatPacket();

        packet.type    = "CGI";
        packet.command = "choose";
        packet.seatID  = seatId;
        string  jsonStr = JSON.Dump(packet);
        Variant jsonObj = JSON.Load(jsonStr);

        netWorkServices.sendCGIRequest(jsonObj, callBack);
    }
예제 #3
0
    public void setName(string name, NetworkCallBack callBack)
    {
        NetWorkServices netWorkServices = NetWorkServices.getInstance();
        NamePacket      packet          = new NamePacket();

        packet.name    = name;
        packet.type    = "CGI";
        packet.command = "setName";
        string  jsonStr = JSON.Dump(packet);
        Variant jsonObj = JSON.Load(jsonStr);

        netWorkServices.sendCGIRequest(jsonObj, callBack);
    }
예제 #4
0
 public void addListenerForSyncMessage(string command, NetworkCallBack callBack)
 {
     lock (PUSHCallbackMap)
     {
         if (PUSHCallbackMap.Contains(command))
         {
             PUSHCallbackMap[command] = callBack;
         }
         else
         {
             PUSHCallbackMap.Add(command, callBack);
         }
     }
 }
예제 #5
0
 public void sendCGIRequest(Variant message, NetworkCallBack callBack)
 {
     lock (CGICallbackMap)
     {
         if (CGICallbackMap.Contains((string)message["command"]))
         {
             CGICallbackMap[(string)message["command"]] = callBack;
         }
         else
         {
             CGICallbackMap.Add((string)message["command"], callBack);
         }
     }
     socketClient.sendMessage(message);
 }
예제 #6
0
 public void setSeatsStatusCallBack(NetworkCallBack callBack)
 {
     NetWorkServices.getInstance().addListenerForSyncMessage("seatStatus", callBack);
 }