using System;
using System.Net.Http;
using System.Threading.Tasks;
using OSS.Http.Connect;
using OSS.Http.Models;
namespace OSS.Http
{
///
/// http请求辅助类
///
public static class HttpUtil
{
private static HttpClientHandler m_Handler;
private static OsRest m_Client ;
public static Action SetHandler { get; set; }
///
/// 同步的请求方式
///
/// 请求的参数
/// 自定义的Response结果
public static Task ExecuteSync(this OsHttpRequest request,HttpCompletionOption completionOption=HttpCompletionOption.ResponseContentRead)
{
if (m_Client==null)
{
m_Handler=new HttpClientHandler();
ConfigClientHandler(m_Handler);
m_Client=new OsRest(m_Handler);
}
return m_Client.RestSend(request, completionOption);
}
///
/// 配置请求处理类
///
///
public static void ConfigClientHandler(HttpClientHandler reqHandler)
{
reqHandler.AllowAutoRedirect = true;
reqHandler.MaxAutomaticRedirections = 5;
reqHandler.UseCookies = true;
SetHandler?.Invoke(reqHandler);
}
/////
///// 处理远程请求方法,并返回需要的实体
/////
///// 需要返回的实体类型
///// 远程请求组件的request基本信息
///// 获取实体格式化方法
///// 如果
///// 实体类型
//public static T RestCommon(OsHttpRequest request, Func funcFormat,
// Func errorButResponseFormat = null)
// where T : ResultModel, new()
//{
// T t = default(T);
// OsHttpResponse response = ExecuteSync(request);
// if (response.ResponseStatus == ResponseStatus.Completed
// || response.ResponseStatus == ResponseStatus.ErrorButResponse)
// {
// if (response.ResponseStatus == ResponseStatus.ErrorButResponse
// && errorButResponseFormat != null)
// {
// t = errorButResponseFormat(response);
// }
// else
// {
// t = funcFormat(response);
// }
// return t;
// }
// return t;
//}
}
}