using Newtonsoft.Json; using OnlineUserPool.Model; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading.Tasks; namespace OnlineUserPool.Unility { public class BaseApi { internal static System.Net.Http.HttpClient httpClient; static BaseApi() { httpClient = new System.Net.Http.HttpClient(); httpClient.DefaultRequestHeaders.UserAgent.Add(new System.Net.Http.Headers.ProductInfoHeaderValue("OnlineUserPool", "1.0.0")); } protected static async Task PostAsync(string url, object data) { StringContent stringContent; if (data != null) { stringContent = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json"); } else { stringContent = new StringContent("", Encoding.UTF8); } var response = await httpClient.PostAsync(ConfigHelp.Host + url, stringContent).ConfigureAwait(false); var result = await response.Content.ReadAsStringAsync(); return JsonConvert.DeserializeObject(result); } protected static async Task GetAsync(string url) { var response = await httpClient.GetAsync(ConfigHelp.Host + url, HttpCompletionOption.ResponseContentRead).ConfigureAwait(false); var result = await response.Content.ReadAsStringAsync(); return JsonConvert.DeserializeObject(result); } } public class WebService : BaseApi { /// /// 从服务端获取记录信息 /// /// public static List GetRecordFileFromServer(List id) { if (!id.Any()) { return new List(); } return PostAsync>>("MapRecord/GetRandomList", id).ConfigureAwait(false).GetAwaiter().GetResult().data; } public static List GetMapRouteRandomRecord(int top, IEnumerable routeIds) { var routeIdsStr = ""; if(routeIds != null) { routeIdsStr = string.Join(",", routeIds); } return GetAsync>>($"MapRecord/GetRandomRankingUserRecord?top={ top }&routeIds={ routeIdsStr }").ConfigureAwait(false).GetAwaiter().GetResult().data; } } }