gpt4 book ai didi

c# - 拦截 C# HttpClient GetAsync

转载 作者:太空狗 更新时间:2023-10-30 00:31:12 25 4
gpt4 key购买 nike

我有一个 Web 项目(C#、MVC5 但没有 WebAPI)和一个简单的 HTTP REST 客户端,它调用外部 REST 服务并获取 accessToken 等。

我想检查所有 Get/PostAsync 调用对 statusCode 401 的响应,但我发现在实现 DelegatingHandler 时我只能覆盖 SendAsync 方法。

class CustomDelegatingHandler : DelegatingHandler
{
async protected override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
HttpResponseMessage response = await base.SendAsync(request, cancellationToken);

if (response.StatusCode == HttpStatusCode.Unauthorized)
{

还有什么我可以做的,以免更改所有异步调用的实现以使用 SendAsync

(我真正想做的是刷新 accessToken。)

最佳答案

我认为您走在正确的轨道上。不过,您无需将调用更改为使用 SendAsync 而不是 GetAsyncPostAsync 等。相反,您需要更改实例化 HttpClient 的方式:

var client = new HttpClient(new CustomDelegatingHandlerTokenRefresher());
// GetAsync, PostAsync, etc will hit your handler

关于c# - 拦截 C# HttpClient GetAsync,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29106664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com