拦截C#HttpClient GetAsync

玛丽亚

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

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

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。)

托德·梅尼尔

我认为您在正确的轨道上。不过,您无需将调用更改SendAsyncGetAsync而是使用代替PostAsync相反,您需要更改实例化的方式HttpClient

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Blazor HttpClient卡在GetAsync中

HttpClient GetAsync方法403错误

HttpClient GetAsync线程池饥饿

Windows Phone HttpClient GetAsync性能

使用httpClient.GetAsync时添加标题

HttpClient.GetAsync不起作用

从HttpClient.GetAsync()捕获OutOfMemory异常

Xamarin HttpClient方法GetAsync超时错误

.Net HttpClient.GetStreamAsync() 的行為與 .GetAsync() 不同

调用HttpClient.GetAsync时出错:基础连接已关闭

如何为httpclient getasync方法创建模拟?

如何在httpclient中向GetAsync添加标头

HttpClient.getAsync(URL)挂起并且不回复

在 GetAsync 完成之前很久就结束请求的奇怪 HttpClient 日志记录

HttpClient.GetAsync()抛出FileLoadException,找不到Newtonsoft.JsonNET

使用HttpClient.GetAsync调用Web API似乎挂起

使用await / async时HttpClient.GetAsync(...)从不返回

HttpClient GetAsync响应内容与Fiddler给我的内容不同

带有URL中的哈希值的HttpClient GetAsync

在不同線程中運行 HttpClient GetAsync

连接到VPN时HttpClient.GetAsync超时

如何等待HttpClient GetAsync调用,直到它返回C#中的请求

C# .net MVC Http client.GetAsync(ListOfUrls)

C#HttpClient或HttpWebRequest类

C#HttpClient跟踪卡住

非泛型方法'HttpClient.GetAsync(string)'不能与类型参数一起使用

使用HttpClient进行异步NancyFX-fbcdn的GetAsync返回403禁止吗?

用户未登录时 HttpClient.GetAsync 上的 System.IO.IOException

HttpClient.GetAsync一次仅执行2个请求?