using System; using System.Collections.Generic; using System.Net.Http; using System.Text; using System.Threading.Tasks; using TEAMModelOS.SDK.Context.Configuration; using TEAMModelOS.SDK.Context.Constant.Common; using HttpClientSpace = System.Net.Http; namespace TEAMModelOS.SDK.Extension.HttpClient.Implements { /// /// 需要调整的 https://blog.yowko.com/httpclientfactory-dotnet-core-dotnet-framework/ /// public class HttpClientSchool { HttpClientSpace.HttpClient client { get; } public HttpClientSchool(HttpClientSpace.HttpClient _client) { // _client.BaseAddress =new Uri(BaseConfigModel.Configuration["HaBookAuth:AccountUrl"]); _client.Timeout = new TimeSpan(0, 0, 1000); _client.DefaultRequestHeaders.Add(Constants.AUTHORIZATION, BaseConfigModel.Configuration["HaBookAuth:SchoolCodeKey"]); client = _client; } /// /// 同步GET请求 /// /// /// /// 请求响应超时时间,单位/s(默认100秒) /// public string HttpGet(string url) { //if (headers != null) //{ // foreach (KeyValuePair header in headers) // { // client.DefaultRequestHeaders.Add(header.Key, header.Value); // } //} //if (timeout > 0) //{ // client.Timeout = new TimeSpan(0, 0, timeout); //} byte[] resultBytes = client.GetByteArrayAsync(url).Result; return Encoding.UTF8.GetString(resultBytes); } /// /// 异步GET请求 /// /// /// /// 请求响应超时时间,单位/s(默认100秒) /// public async Task HttpGetAsync(string url) { //if (headers != null) //{ // foreach (KeyValuePair header in headers) // { // client.DefaultRequestHeaders.Add(header.Key, header.Value); // } //} //if (timeout > 0) //{ // client.Timeout = new TimeSpan(0, 0, timeout); //} byte[] resultBytes = await client.GetByteArrayAsync(url); return Encoding.Default.GetString(resultBytes); } /// /// 同步POST请求 /// /// /// /// /// /// 请求响应超时时间,单位/s(默认100秒) /// 默认UTF8 /// public string HttpPost(string url, string postData, string contentType = null, Encoding encoding = null) { //if (headers != null) //{ // foreach (KeyValuePair header in headers) // { // client.DefaultRequestHeaders.Add(header.Key, header.Value); // } //} //if (timeout > 0) //{ // client.Timeout = new TimeSpan(0, 0, timeout); //} HttpContent content = new StringContent(postData ?? "", encoding ?? Encoding.UTF8); if (contentType != null) { content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(contentType); } HttpResponseMessage responseMessage = client.PostAsync(url, content).Result; byte[] resultBytes = responseMessage.Content.ReadAsByteArrayAsync().Result; return Encoding.UTF8.GetString(resultBytes); } /// /// 异步POST请求 /// /// /// /// /// /// 请求响应超时时间,单位/s(默认100秒) /// 默认UTF8 /// public async Task HttpPostAsync(string url, string postData, string contentType = null, Encoding encoding = null) { //if (headers != null) //{ // foreach (KeyValuePair header in headers) // { // client.DefaultRequestHeaders.Add(header.Key, header.Value); // } //} //if (timeout > 0) //{ // client.Timeout = new TimeSpan(0, 0, timeout); //} HttpContent content = new StringContent(postData ?? "", encoding ?? Encoding.UTF8); if (contentType != null) { content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(contentType); } HttpResponseMessage responseMessage = await client.PostAsync(url, content); byte[] resultBytes = await responseMessage.Content.ReadAsByteArrayAsync(); return Encoding.UTF8.GetString(resultBytes); } /// /// 异步POST请求 /// /// /// /// /// /// 请求响应超时时间,单位/s(默认100秒) /// 默认UTF8 /// public async Task HttpPostAsync(string url, List> postData, string contentType = null, Encoding encoding = null) { //if (headers != null) //{ // foreach (KeyValuePair header in headers) // { // client.DefaultRequestHeaders.Add(header.Key, header.Value); // } //} //if (timeout > 0) //{ // client.Timeout = new TimeSpan(0, 0, timeout); //} HttpContent content = new FormUrlEncodedContent(postData); if (contentType != null) { content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(contentType); } HttpResponseMessage responseMessage = await client.PostAsync(url, content); byte[] resultBytes = await responseMessage.Content.ReadAsByteArrayAsync(); return Encoding.UTF8.GetString(resultBytes); } } }