/// <summary> /// 请求 /// </summary> /// <param name="httpInvokes"></param> /// <param name="loadArgs">Http基础请求添加额外字段</param> /// <returns></returns> public static Result Requests(this HttpInvokes httpInvokes, Func <Dictionary <string, string> > loadArgs = null) { var result = Run(httpInvokes, loadArgs); return(result); }
private static Result Run(HttpInvokes httpInvokes, Func <Dictionary <string, string> > loadArgs = null) { Init(); if (httpInvokes == null || httpInvokes.HttpCommands == null) { throw new Exception("请求参数不正确"); } var postdata = _jsonConvert.SerializeObject(new { AppID = httpInvokes.AppID, HttpCommands = httpInvokes.HttpCommands }); Dictionary <string, string> dic; if (loadArgs != null) { dic = loadArgs() ?? new Dictionary <string, string>(); } else { dic = new Dictionary <string, string>(); } #region loadArgs dic.Add("channel", GetPath()); var _login = _logins[_3rdHttp]; if (_token != null && _login.NeedLogin(httpInvokes.AppID)) { if (_login.IsLocalToken(httpInvokes.AppID)) { dic.Add("uid", _login.UID); dic.Add("token", _login.Token); } else { dic.Add("uid", _token.UID); dic.Add("token", _token.Token); } } if (httpInvokes.ExexuteID.HasValue) { dic.Add("executeid", httpInvokes.ExexuteID.Value.ToString()); } dic.Add("cip", ip); dic.Add("sendertime", httpInvokes.SenderTime.ToString("yyyy-MM-dd HH:mm:ss.fff")); #endregion var ret = HttpHelper.PostRequest(_3rdHttp + "Http/CHttpRequests", postdata, dic, _timeout); if (ret.IsSuccess == false) { var error = ret.GetWrong(); if (error == Wrong.UnLogin || error == Wrong.LoginTimeOut) { SetToken(GetLogin().Login(httpInvokes.AppID)); } if (httpInvokes.CanRetry && httpInvokes.RetryTimes > 0) { for (int i = 0; i < httpInvokes.RetryTimes; i++) { Console.WriteLine("重试{0}次", i + 1); ret = HttpHelper.PostRequest(_3rdHttp + "Http/CHttpRequests", postdata, dic, _timeout); if (ret.IsSuccess) { break; } } } } return(new Result() { Data = ret.d, IsSuccess = ret.IsSuccess, Wrong = ret.GetWrong(), HttpCode = ret.code, }); }