/// <summary> /// 合成Url /// </summary> /// <param name="request"></param> /// <param name="route"></param> /// <returns></returns> public virtual UrlConcat ConcatApiUrl(IRoutePrimaryKeySelect request, string route) { return(new UrlConcat() { Host = this.GetCurrentUrlHost(request), Route = route, Option = UrlConcatOption.Concat }); }
/// <summary> /// 获取Url,如果该组的资源在脱机状态下,则将该次索引指向下一组资源中 /// </summary> /// <param name="routePrimaryKey">api路由主键</param> /// <param name="matchA10Content">匹配A10请求回来的内容</param> /// <returns></returns> private string GetCurrentApiUrlHost(IRoutePrimaryKeySelect routePrimaryKey, System.Func <string, bool> matchA10Content) { var temp = this.A10HealthReport.GetReport(this.ApiRouteProvider.Group); if (temp.IsNullOrEmpty()) { return(string.Empty); } var matchs = this.Select(temp, matchA10Content); if (matchs.IsNullOrEmpty()) { return(null); } var index = this.SumASCII(routePrimaryKey == null ? Randomizer.Next(matchs.Count()).ToString() : routePrimaryKey.PrimaryKey) % matchs.Count(); return(matchs[index].ApiUri); }
/// <summary> /// 以Get方式发送请求 /// </summary> /// <param name="jsonSerializer">json序列化</param> /// <param name="request">参数请求</param> /// <param name="requestPara">请求参数集合.</param> /// <param name="route">路由标识</param> /// <param name="headerParams">放在header参数.</param> /// <param name="timeout">过期时间,以毫秒为单位</param> /// <returns></returns> public void Get(IJsonSerializer jsonSerializer, IRoutePrimaryKeySelect request, string route, IDictionary <string, string> requestPara, IDictionary <string, string> headerParams, int timeout = 30000) { this.Get(jsonSerializer, this.ConcatApiUrl(request, route), requestPara, headerParams, timeout); }
/// <summary> /// 以Post方式发送请求 /// </summary> /// <param name="jsonSerializer">json序列化</param> /// <param name="request">参数请求</param> /// <param name="jsonDate">json请求内容</param> /// <param name="route">路由标识</param> /// <param name="headerParams">放在header参数.</param> /// <param name="timeout">过期时间,以毫秒为单位</param> /// <returns></returns> public void Post(IJsonSerializer jsonSerializer, IRoutePrimaryKeySelect request, string route, string jsonDate, IDictionary <string, string> headerParams, int timeout = 30000) { this.Post(jsonSerializer, this.ConcatApiUrl(request, route), jsonDate, headerParams); }
/// <summary> /// 获取Url,如果该组的资源在脱机状态下,则将该次索引指向下一组资源中 /// </summary> /// <param name="routePrimaryKey">api路由主键</param> /// <returns></returns> public string GetCurrentUrlHost(IRoutePrimaryKeySelect routePrimaryKey) { return(this.GetCurrentApiUrlHost(routePrimaryKey, this.ApiRouteProvider.A10ContentMatch)); }