src/Library/NetPro.Proxy/ApiClientFilter.cs
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using System.Net;
using System.Threading.Tasks;
using WebApiClientCore;
using WebApiClientCore.Attributes;
namespace System.NetPro
{
/// <summary>
/// WebApiClientCore过滤器
/// 响应为流时使用此特性会导致多次读流产生异常
/// </summary>
/// <exception cref="System.Exception">occur error when the return type is stream.</exception>
public class ApiClientFilter : ApiFilterAttribute
{
/// <summary>
///
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public override Task OnRequestAsync(ApiRequestContext context)
{
var uri = context.HttpContext.RequestMessage.RequestUri;
Console.WriteLine($"request uri is:{uri}");
return Task.CompletedTask;
}
/// <summary>
///
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public override async Task OnResponseAsync(ApiResponseContext context)
{
var _logger = context.HttpContext.ServiceProvider.GetService<ILogger<ApiClientFilter>>();
try
{
if (_logger != null)
{
_logger.LogInformation($"HasResult:{context.ResultStatus}");
_logger.LogInformation($"context.Result:{context.Result}");
}
else
{
Console.WriteLine($"HasResult:{context.ResultStatus}");
Console.WriteLine($"context.Result:{context.Result}");
}
string resultString = null;
HttpStatusCode statusCode = HttpStatusCode.BadRequest;
if (context.HttpContext.ResponseMessage != null)
{
resultString = await context.HttpContext.ResponseMessage.Content.ReadAsStringAsync();
statusCode = context.HttpContext.ResponseMessage.StatusCode;
}
if (context.ResultStatus == ResultStatus.HasException)
{
后面还有 35 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。