You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
373 lines
12 KiB
C#
373 lines
12 KiB
C#
using EntrustSettle.Model;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Net.Http;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace EntrustSettle.Common.Http.HttpPolly
|
|
{
|
|
public class HttpPollyHelper : IHttpPollyHelper
|
|
{
|
|
private readonly IHttpClientFactory _clientFactory;
|
|
|
|
public HttpPollyHelper(IHttpClientFactory httpClientFactory)
|
|
{
|
|
_clientFactory = httpClientFactory;
|
|
}
|
|
|
|
public async Task<T> PostAsync<T, R>(HttpEnum httpEnum, string url, R request, Dictionary<string, string> headers = null)
|
|
{
|
|
try
|
|
{
|
|
var client = _clientFactory.CreateClient(httpEnum.ToString());
|
|
if (headers != null)
|
|
{
|
|
foreach (var header in headers)
|
|
{
|
|
if (!client.DefaultRequestHeaders.Contains(header.Key))
|
|
{
|
|
client.DefaultRequestHeaders.Add(header.Key, header.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
var stringContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
|
|
var response = await client.PostAsync(url, stringContent);
|
|
|
|
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
|
{
|
|
string result = await response.Content.ReadAsStringAsync();
|
|
return JsonConvert.DeserializeObject<T>(result);
|
|
}
|
|
else
|
|
{
|
|
throw new Exception($"Http Error StatusCode:{response.StatusCode}");
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
|
|
}
|
|
|
|
public async Task<T> PostAsync<T>(HttpEnum httpEnum, string url, string request, Dictionary<string, string> headers = null)
|
|
{
|
|
try
|
|
{
|
|
var client = _clientFactory.CreateClient(httpEnum.ToString());
|
|
if (headers != null)
|
|
{
|
|
foreach (var header in headers)
|
|
{
|
|
if (!client.DefaultRequestHeaders.Contains(header.Key))
|
|
{
|
|
client.DefaultRequestHeaders.Add(header.Key, header.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
var stringContent = new StringContent(request, Encoding.UTF8, "application/json");
|
|
var response = await client.PostAsync(url, stringContent);
|
|
|
|
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
|
{
|
|
string result = await response.Content.ReadAsStringAsync();
|
|
return JsonConvert.DeserializeObject<T>(result);
|
|
}
|
|
else
|
|
{
|
|
throw new Exception($"Http Error StatusCode:{response.StatusCode}");
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
|
|
}
|
|
|
|
public async Task<string> PostAsync<R>(HttpEnum httpEnum, string url, R request, Dictionary<string, string> headers = null)
|
|
{
|
|
try
|
|
{
|
|
var client = _clientFactory.CreateClient(httpEnum.ToString());
|
|
if (headers != null)
|
|
{
|
|
foreach (var header in headers)
|
|
{
|
|
if (!client.DefaultRequestHeaders.Contains(header.Key))
|
|
{
|
|
client.DefaultRequestHeaders.Add(header.Key, header.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
var stringContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
|
|
var response = await client.PostAsync(url, stringContent);
|
|
|
|
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
|
{
|
|
return await response.Content.ReadAsStringAsync();
|
|
}
|
|
else
|
|
{
|
|
throw new Exception($"Http Error StatusCode:{response.StatusCode}");
|
|
}
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
|
|
}
|
|
|
|
public async Task<string> PostAsync(HttpEnum httpEnum, string url, string request, Dictionary<string, string> headers = null)
|
|
{
|
|
try
|
|
{
|
|
var client = _clientFactory.CreateClient(httpEnum.ToString());
|
|
if (headers != null)
|
|
{
|
|
foreach (var header in headers)
|
|
{
|
|
if (!client.DefaultRequestHeaders.Contains(header.Key))
|
|
{
|
|
client.DefaultRequestHeaders.Add(header.Key, header.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
var stringContent = new StringContent(request, Encoding.UTF8, "application/json");
|
|
var response = await client.PostAsync(url, stringContent);
|
|
|
|
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
|
{
|
|
return await response.Content.ReadAsStringAsync();
|
|
}
|
|
else
|
|
{
|
|
throw new Exception($"Http Error StatusCode:{response.StatusCode}");
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
|
|
}
|
|
|
|
public async Task<T> GetAsync<T>(HttpEnum httpEnum, string url, Dictionary<string, string> queryParams = null, Dictionary<string, string> headers = null)
|
|
{
|
|
try
|
|
{
|
|
if (queryParams != null)
|
|
{
|
|
url += "?";
|
|
foreach (KeyValuePair<string, string> param in queryParams)
|
|
{
|
|
url += (param.Key + "=" + System.Web.HttpUtility.UrlEncode(param.Value, Encoding.UTF8) + "&");
|
|
}
|
|
url = url.TrimEnd('&');
|
|
}
|
|
var client = _clientFactory.CreateClient(httpEnum.ToString());
|
|
if (headers != null)
|
|
{
|
|
foreach (var header in headers)
|
|
{
|
|
if (!client.DefaultRequestHeaders.Contains(header.Key))
|
|
{
|
|
client.DefaultRequestHeaders.Add(header.Key, header.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
var response = await client.GetAsync(url);
|
|
|
|
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
|
{
|
|
string result = await response.Content.ReadAsStringAsync();
|
|
return JsonConvert.DeserializeObject<T>(result);
|
|
}
|
|
else
|
|
{
|
|
throw new Exception($"Http Error StatusCode:{response.StatusCode}");
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
|
|
}
|
|
|
|
public async Task<string> GetAsync(HttpEnum httpEnum, string url, Dictionary<string, string> queryParams = null, Dictionary<string, string> headers = null)
|
|
{
|
|
try
|
|
{
|
|
if (queryParams != null)
|
|
{
|
|
url += "?";
|
|
foreach (KeyValuePair<string, string> param in queryParams)
|
|
{
|
|
url += (param.Key + "=" + System.Web.HttpUtility.UrlEncode(param.Value, Encoding.UTF8) + "&");
|
|
}
|
|
url = url.TrimEnd('&');
|
|
}
|
|
var client = _clientFactory.CreateClient(httpEnum.ToString());
|
|
if (headers != null)
|
|
{
|
|
foreach (var header in headers)
|
|
{
|
|
if (!client.DefaultRequestHeaders.Contains(header.Key))
|
|
{
|
|
client.DefaultRequestHeaders.Add(header.Key, header.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
var response = await client.GetAsync(url);
|
|
|
|
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
|
{
|
|
return await response.Content.ReadAsStringAsync(); ;
|
|
}
|
|
else
|
|
{
|
|
throw new Exception($"Http Error StatusCode:{response.StatusCode}");
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
|
|
}
|
|
|
|
public async Task<T> PutAsync<T, R>(HttpEnum httpEnum, string url, R request, Dictionary<string, string> headers = null)
|
|
{
|
|
try
|
|
{
|
|
var client = _clientFactory.CreateClient(httpEnum.ToString());
|
|
if (headers != null)
|
|
{
|
|
foreach (var header in headers)
|
|
{
|
|
if (!client.DefaultRequestHeaders.Contains(header.Key))
|
|
{
|
|
client.DefaultRequestHeaders.Add(header.Key, header.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
var stringContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");
|
|
var response = await client.PutAsync(url, stringContent);
|
|
|
|
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
|
{
|
|
string result = await response.Content.ReadAsStringAsync();
|
|
return JsonConvert.DeserializeObject<T>(result);
|
|
}
|
|
else
|
|
{
|
|
throw new Exception($"Http Error StatusCode:{response.StatusCode}");
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
|
|
}
|
|
|
|
public async Task<T> PutAsync<T>(HttpEnum httpEnum, string url, string request, Dictionary<string, string> headers = null)
|
|
{
|
|
try
|
|
{
|
|
var client = _clientFactory.CreateClient(httpEnum.ToString());
|
|
if (headers != null)
|
|
{
|
|
foreach (var header in headers)
|
|
{
|
|
if (!client.DefaultRequestHeaders.Contains(header.Key))
|
|
{
|
|
client.DefaultRequestHeaders.Add(header.Key, header.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
var stringContent = new StringContent(request, Encoding.UTF8, "application/json");
|
|
var response = await client.PutAsync(url, stringContent);
|
|
|
|
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
|
{
|
|
string result = await response.Content.ReadAsStringAsync();
|
|
return JsonConvert.DeserializeObject<T>(result);
|
|
}
|
|
else
|
|
{
|
|
throw new Exception($"Http Error StatusCode:{response.StatusCode}");
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
|
|
}
|
|
|
|
public async Task<T> DeleteAsync<T>(HttpEnum httpEnum, string url, Dictionary<string, string> headers = null)
|
|
{
|
|
try
|
|
{
|
|
var client = _clientFactory.CreateClient(httpEnum.ToString());
|
|
if (headers != null)
|
|
{
|
|
foreach (var header in headers)
|
|
{
|
|
if (!client.DefaultRequestHeaders.Contains(header.Key))
|
|
{
|
|
client.DefaultRequestHeaders.Add(header.Key, header.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
var response = await client.DeleteAsync(url);
|
|
|
|
if (response.StatusCode == System.Net.HttpStatusCode.OK)
|
|
{
|
|
string result = await response.Content.ReadAsStringAsync();
|
|
return JsonConvert.DeserializeObject<T>(result);
|
|
}
|
|
else
|
|
{
|
|
throw new Exception($"Http Error StatusCode:{response.StatusCode}");
|
|
}
|
|
|
|
}
|
|
catch (Exception)
|
|
{
|
|
|
|
throw;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|