public static TopResponse GetTopResponse(this HttpRequest request, IParamsRequest req, ITopCache cache = null) { if (req is IParamsRequest) { var parameters = request.HttpMethod.ToUpper() == "GET" ? request.QueryString : request.Form; return (req as IParamsRequest).GetTopResponse(parameters, null); } throw new TopException(1, "method is null"); }
public T Execute <T>(IParamsRequest request, DateTime timestamp) where T : TopResponse { try { request.Validate(); } catch (TopException e) { return(createErrorResponse <T>(e.ErrorCode, e.ErrorMsg)); } string url = this.ServerUrl; var txtParams = new TopDictionary(request.GetParameters()); txtParams.Add(METHOD, request.GetApiName()); txtParams.Add(API_KEY, apiKey); txtParams.Add(TIMESTAMP, TopUtils.GetUnixTimestamp(timestamp).ToString()); //if (expires.HasValue) txtParams.Add(EXPIRES, PushUtils.GetUnixTimestamp(expires.Value).ToString()); txtParams.Add(SIGN, TopUtils.SignTopRequest(txtParams, appSecret)); string body; if (request is ITopUploadRequest) { var fileParams = (request as ITopUploadRequest).GetFileParameters(); body = webUtils.DoPost(url, txtParams, fileParams); } else { body = webUtils.DoPost(url, txtParams); } // 解释响应结果 T rsp = this.DisableParser ? Activator.CreateInstance <T>() : TopUtils.JsonParser <T>(body); rsp.Body = body; // 追踪错误的请求 if (!DisableTrace) { txtParams.Remove(SIGN); txtParams.Add(SIGN, TopUtils.SignTopRequest(txtParams, appSecret)); rsp.ReqUrl = WebUtils.BuildGetUrl(url, txtParams); if (rsp.IsError) { topLogger.Warn(rsp.ReqUrl + "\r\n" + rsp.Body); } } return(rsp); }
public T Execute <T>(IParamsRequest request) where T : TopResponse { return(Execute <T>(request, DateTime.Now)); }