/// <summary>
        /// 将目标Action跳转到社交服
        /// </summary>
        /// <param name="httpGet"></param>
        public static async void SendDesActionToSocialServer(HttpGet httpGet)
        {
            //检查
            if (SocialSession == null)
            {
                TraceLog.WriteError("SendDesActionToSocialServer error, 社交服没连接");
                return;
            }
            int desActionId = 0;

            if (!httpGet.GetInt("DesActionId", ref desActionId))
            {
                TraceLog.WriteError("SendDesActionToSocialServer error, 未指定目标ActionId");
                return;
            }
            //执行
            RequestParam param = new RequestParam();

            param["ActionId"] = desActionId;
            foreach (var key in httpGet.Keys)
            {
                if (key == "ActionId" || key == "DesActionId")
                {
                    continue;
                }
                param[key] = httpGet[key];
            }
            string post = string.Format("?d={0}", System.Web.HttpUtility.UrlEncode(param.ToPostString()));
            var    data = Encoding.UTF8.GetBytes(post);
            await SocialSession.SendAsync(data, 0, data.Length);
        }
Exemple #2
0
 /// <summary>
 /// 请求处理
 /// </summary>
 /// <param name="typeName"></param>
 /// <param name="response"></param>
 /// <param name="userFactory"></param>
 /// <param name="httpGet"></param>
 public static void Request(string typeName, HttpGet httpGet, IGameResponse response, Func<int, BaseUser> userFactory)
 {
     string tempName = string.Format(typeName, httpGet.ActionId);
     int actionID = 0;
     string errorInfo = "";
     try
     {
         bool isRL = BaseStruct.CheckRunloader(httpGet);
         if (isRL || httpGet.CheckSign())
         {
             if (httpGet.GetInt("ActionID", ref actionID))
             {
                 BaseStruct action = FindRoute(typeName, httpGet, actionID);
                 Process(action, httpGet, response, userFactory);
                 if (action != null)
                 {
                     return;
                 }
             }
         }
         else
         {
             errorInfo = "签名验证失败";
             TraceLog.WriteError("Action request {3} error:{2},rl:{0},param:{1}", isRL, httpGet.ParamString, errorInfo, tempName);
         }
     }
     catch (Exception ex)
     {
         TraceLog.WriteError("Action request {0} error:{1}\r\nparam:{2}", tempName, ex, httpGet.ParamString);
     }
     RequestError(response, actionID, errorInfo);
 }
Exemple #3
0
 /// <summary>
 /// 请求脚本处理
 /// </summary>
 /// <param name="httpGet">请求参数对象</param>
 /// <param name="response">字节输出处理</param>
 /// <param name="userFactory">创建user对象工厂,可为Null</param>
 public static void RequestScript(HttpGet httpGet, IGameResponse response, Func<int, BaseUser> userFactory)
 {
     int actionID = httpGet.GetInt("actionId");
     string errorInfo = "";
     try
     {
         bool isRl = BaseStruct.CheckRunloader(httpGet);
         if (isRl || httpGet.CheckSign())
         {
             ScriptRoute scriptRoute = new ScriptRoute(actionID);
             RouteItem routeItem;
             var pythonManager = PythonScriptManager.Current;
             if (pythonManager.TryGetAction(actionID, out routeItem))
             {
                 if (scriptRoute.TryLoadAction(routeItem.ScriptPath))
                 {
                     var baseStruct = new ScriptAction((short)actionID, httpGet, scriptRoute, routeItem.IgnoreAuthorize);
                     Process(baseStruct, httpGet, response, userFactory);
                     return;
                 }
             }
         }
         else
         {
             errorInfo = "签名验证失败";
             TraceLog.WriteError("Action request error:{2},rl:{0},param:{1}", isRl, httpGet.ParamString, errorInfo);
         }
     }
     catch (Exception ex)
     {
         TraceLog.WriteError("Action request error:{0}\r\nparam:{1}", ex, httpGet.ParamString);
     }
     RequestError(response, actionID, errorInfo);
 }