using Amazon.Runtime; using langguanApi.Extensions.AutoDI; namespace langguanApi.Common.Proxy { /// /// http /// [ServiceInjection(InjectionType.Singleton)] public class HttpProxy { private readonly IHttpClientFactory _httpClientFactory; public HttpProxy(IHttpClientFactory httpClientFactory) { _httpClientFactory = httpClientFactory; } /// /// 获取数据 /// /// /// /// /// /// public async Task Get(Dictionary parameters, string requestUri) { //从工厂获取请求对象 var client = _httpClientFactory.CreateClient(); if (parameters != null) { var strParam = string.Join("&", parameters.Select(o => o.Key + "=" + o.Value)); requestUri = string.Concat(requestUri, '?', strParam); } client.BaseAddress = new Uri(requestUri); var resp = await client.GetAsync(requestUri); if (resp.IsSuccessStatusCode) { var content = await resp.Content.ReadAsStringAsync(); return Newtonsoft.Json.JsonConvert.DeserializeObject(content); } else { Console.WriteLine($"请求失败,状态码:{resp.StatusCode},请求地址 {requestUri}"); return default(T); } } /// /// post数据 /// /// /// /// public async Task PostData(object data, string requestUri) { StringContent content = null; var client = _httpClientFactory.CreateClient(); client.BaseAddress = new Uri(requestUri); if (data != null) { string json = Newtonsoft.Json.JsonConvert.SerializeObject(data); content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"); } var response = await client.PostAsync(requestUri, content); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadAsStringAsync(); return Newtonsoft.Json.JsonConvert.DeserializeObject(result); } else { Console.WriteLine($"请求失败,状态码:{response.StatusCode},请求地址 {requestUri}"); return default(T); } } } }