C# baseurl по инъекции httpClient - PullRequest
0 голосов
/ 01 марта 2020

Я использую внедрение зависимостей с помощью HttpClient и пытаюсь выяснить, как установить baseurl, но не могу понять, как это сделать.

Я делаю это следующим образом:

public static async Task<HttpResponseMessage> PostUser(User user) { 
        var services = new ServiceCollection();
        services.UseServices();
        var serviceProvider = services.BuildServiceProvider();
        var service = serviceProvider.GetRequiredService<IUserService>();

        return await service.PostUser(user);
 }

class UserService : IUserService
    {
        private readonly HttpClient _httpClient;

        public UserService(HttpClient httpClient)
        {
            _httpClient = httpClient;
        }

        public async Task<HttpResponseMessage> PostUser(User user)
        {
            HttpResponseMessage response = await _httpClient.PostAsJsonAsync(BASEURL, user);
            return response;
        }

    }

Я регистрируюсь таким образом:

public static class Bootstrapper
    {
        public static void UseServices(this IServiceCollection services)
        {
            services.AddHttpClient<IUserService, UserService>();

        }
    }

Итак, я хочу использовать BASEURL в приведенном выше примере, но как я могу передать его с помощью httpClient?

1 Ответ

0 голосов
/ 01 марта 2020

Это должно сработать:

    public static class Bootstrapper
    {
        public static void UseServices(this IServiceCollection services)
        {
            services.AddHttpClient<IUserServicee, UserService>(
                              client => client.BaseAddress = new Uri("YOUR_BASE_ADDRESS"));

        }
    }

Перегрузка метода принимает Action<HttpClient> в качестве аргумента, поэтому он недействителен, и вы можете изменить свой экземпляр HttpClient так, как вам хочется.

...