-
Notifications
You must be signed in to change notification settings - Fork 327
Open
Labels
Description
⚠⚠ 请注意:不符合格式要求的 Issue 可能会被直接关闭。
关于建议的简单描述
/// <summary>
/// 获取小程序二维码
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
public async Task<WxaGetWxaCodeUnlimitResponse> WxaGetWxaCodeUnlimit(MpQrCodeCreateDto dto)
{
var request = new WxaGetWxaCodeUnlimitRequest()
{
PagePath = dto.Page,
Scene = dto.Scene,
IsHyaline = dto.IsHyaline,
Width = dto.Width,
AccessToken = _accessTokenManager.GetAccessToken()
};
if (!_hostEnvironment.IsProduction())
{
request.RequireCheckPath = false;
request.EnvironmentVersion = "develop";
}
var response = await _client.ExecuteWxaGetWxaCodeUnlimitAsync(request);
Error.ThrowIf(!response.IsSuccessful(), $"获取小程序二维码失败,请稍后再试[{response.ErrorCode}]");
return response;
}
public class WechatCallLogIntercepter : HttpInterceptor
{
private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
public override async Task BeforeCallAsync(HttpInterceptorContext context, CancellationToken cancellationToken = default)
{
var url = context.FlurlRequest.Url.ToString();
var requestBody = string.Empty;
if (context.FlurlRequest.Content != null)
{
requestBody = await context.FlurlRequest.Content.ReadAsStringAsync();
}
context.Items.Add("body", requestBody);
}
public override async Task AfterCallAsync(HttpInterceptorContext context, CancellationToken cancellationToken = default)
{
var url = context.FlurlRequest.Url.ToString();
var requestBody = context.Items["body"]?.ToString();
var responseBody = await context.FlurlResponse.ResponseMessage.Content.ReadAsStringAsync();
var sb = new StringBuilder();
sb.AppendLine("微信接口请求");
sb.AppendLine($"请求地址:{url}");
sb.AppendLine($"请求体:{requestBody}");
sb.AppendLine($"响应码:{context.FlurlResponse.StatusCode}");
sb.Append($"响应体:{responseBody}");
_logger.Info($"{sb}");
}
}
例如在 HttpInterceptorContext 中获取当前请求的微信client,当前请求的参数 WxaGetWxaCodeUnlimitRequest,
WxaGetWxaCodeUnlimitResponse等,我看了源码,应该就是ICommonClient, ICommonRequest, ICommonResponse这些对象
可能要对某些特定的对象或者请求做一下操作或记录,这些参数都没有携带导context中,导致无法在拦截器中判断某些特定的请求,只能通过url判断感觉有点不优雅
实现思路或解决方案
补充说明
请在此填写任何其他可以帮助说明的信息。