maliming
1 year ago
No known key found for this signature in database
GPG Key ID: A646B9CB645ECEA4
3 changed files with
12 additions and
4 deletions
-
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/AbpHttpClientOptions.cs
-
framework/src/Volo.Abp.Http.Client/Volo/Abp/Http/Client/ClientProxying/ClientProxyBase.cs
-
framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/AbpHttpClientTestModule.cs
|
|
|
@ -10,11 +10,17 @@ public class AbpHttpClientOptions |
|
|
|
{ |
|
|
|
public Dictionary<Type, HttpClientProxyConfig> HttpClientProxies { get; set; } |
|
|
|
|
|
|
|
public Dictionary<string, Action<HttpClientProxyConfig, ClientProxyRequestContext, HttpClient>> ProxyHttpClientPreSendActions { get; } |
|
|
|
public Dictionary<string, List<Action<HttpClientProxyConfig, ClientProxyRequestContext, HttpClient>>> ProxyHttpClientPreSendActions { get; } |
|
|
|
|
|
|
|
public AbpHttpClientOptions() |
|
|
|
{ |
|
|
|
HttpClientProxies = new Dictionary<Type, HttpClientProxyConfig>(); |
|
|
|
ProxyHttpClientPreSendActions = new Dictionary<string, Action<HttpClientProxyConfig, ClientProxyRequestContext, HttpClient>>(); |
|
|
|
ProxyHttpClientPreSendActions = new Dictionary<string, List<Action<HttpClientProxyConfig, ClientProxyRequestContext, HttpClient>>>(); |
|
|
|
} |
|
|
|
|
|
|
|
public AbpHttpClientOptions AddPreSendAction(string remoteServiceName, Action<HttpClientProxyConfig, ClientProxyRequestContext, HttpClient> action) |
|
|
|
{ |
|
|
|
ProxyHttpClientPreSendActions.GetOrAdd(remoteServiceName, () => new List<Action<HttpClientProxyConfig, ClientProxyRequestContext, HttpClient>>()).Add(action); |
|
|
|
return this; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -146,7 +146,7 @@ public class ClientProxyBase<TService> : ITransientDependency |
|
|
|
HttpResponseMessage response; |
|
|
|
try |
|
|
|
{ |
|
|
|
foreach (var preSendAction in ClientOptions.Value.ProxyHttpClientPreSendActions.Where(x => x.Key == clientConfig.RemoteServiceName).Select(x => x.Value)) |
|
|
|
foreach (var preSendAction in ClientOptions.Value.ProxyHttpClientPreSendActions.Where(x => x.Key == clientConfig.RemoteServiceName).SelectMany(x => x.Value)) |
|
|
|
{ |
|
|
|
preSendAction(clientConfig, requestContext, client); |
|
|
|
} |
|
|
|
|
|
|
|
@ -1,9 +1,11 @@ |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Net.Http; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using Volo.Abp.AspNetCore.Mvc; |
|
|
|
using Volo.Abp.Http.Client; |
|
|
|
using Volo.Abp.Http.Client.ClientProxying; |
|
|
|
using Volo.Abp.Http.Client.Proxying; |
|
|
|
using Volo.Abp.Http.DynamicProxying; |
|
|
|
using Volo.Abp.Http.Localization; |
|
|
|
using Volo.Abp.Localization; |
|
|
|
@ -64,7 +66,7 @@ public class AbpHttpClientTestModule : AbpModule |
|
|
|
|
|
|
|
Configure<AbpHttpClientOptions>(options => |
|
|
|
{ |
|
|
|
options.ProxyHttpClientPreSendActions.Add("Default", (_, requestContext, httpclient) => |
|
|
|
options.AddPreSendAction("Default", (_, requestContext, httpclient) => |
|
|
|
{ |
|
|
|
if (requestContext.Action.Name.Equals("TimeOutRequestAsync")) |
|
|
|
{ |
|
|
|
|