using System; using System.Collections; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using Hncore.Infrastructure.Serializer; namespace Hncore.Infrastructure.Extension { public static class HttpClientFactoryExtension { public static HttpClient CreateClient(this IHttpClientFactory factory, TimeSpan timeOut) { var client = factory.CreateClient(); client.Timeout = timeOut; return client; } } public static class HttpClientExtension { /// /// post请求,ContentType:application/json /// /// /// /// /// public static async Task PostAsJson(this HttpClient httpClient, string path, object data, Encoding encoding = null) { if (encoding == null) { encoding = Encoding.UTF8; } string content = ""; if (data is string s) { content = s; } else { content = data.ToJson(); } HttpContent httpContent = new StringContent(content, encoding); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); return await httpClient.PostAsync(path, httpContent); } /// /// post请求,ContentType:application/json /// /// /// /// /// public static async Task PostAsJsonGetString(this HttpClient httpClient, string path, object data, Encoding encoding = null) { var res = await httpClient.PostAsJson(path, data, encoding); return await res.Content.ReadAsStringAsync(); } public static async Task PostAsForm(this HttpClient httpClient, string path, IEnumerable> data, Encoding encoding = null) { if (encoding == null) { encoding = Encoding.UTF8; } HttpContent httpContent = new FormUrlEncodedContent(data); return await httpClient.PostAsync(path, httpContent); } public static async Task PostAsFormGetString(this HttpClient httpClient, string path, IEnumerable> data, Encoding encoding = null) { var resp=await httpClient.PostAsForm(path, data, encoding); return await resp.Content.ReadAsStringAsync(); } } }