когда я использую функцию GetPublicHttpClient(), ошибок нет, но при использовании GetPrivateHttpClient()
отображается следующая ошибка :(Task' не содержит определения для 'GetFromJsonAsync', а лучшая перегрузка метода расширения 'HttpClientJsonExtensions.GetFromJsonAsync(HttpClient, string?, CancellationToken)' требует приемника типа 'System.Net.Http.HttpClient ')
Я установил все необходимые пакеты, такие как Microsoft.Extensions.Http" Version="8.0.0"
мой код:< /p>
Код: Выделить всё
using BaseLibrary.DTOs;
namespace ClientLibrary.Helpers
{
public class GetHttpClient(IHttpClientFactory httpClientFactory, LocalStorageService localStorageService)
{
private const string HeaderKey = "Authorization";
public async Task GetPrivateHttpClient()
{
var client = httpClientFactory.CreateClient("SystemApiClient");
var stringToken = await localStorageService.GetToken();
if (string.IsNullOrEmpty(stringToken)) return client;
var deserializeToken = Serializations.DeserializeJsonString(stringToken);
if (deserializeToken == null) return client;
client.DefaultRequestHeaders.Authorization =
new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", deserializeToken.Token);
return client;
}
public HttpClient GetPublicHttpClient()
{
var client = httpClientFactory.CreateClient("SystemApiClient");
client.DefaultRequestHeaders.Remove(HeaderKey);
return client;
}
}
}
Код: Выделить всё
using System.Net.Http.Json;
using BaseLibrary.DTOs;
using BaseLibrary.Responses;
using ClientLibrary.Helpers;
using ClientLibrary.Services.Contracts;
namespace ClientLibrary.Services.Implementations
{
public class UserAccountService(GetHttpClient getHttpClient) : IUserAccountService
{
public const string AuthUrl = "api/authentication";
public async Task CreateAsync(Register user)
{
var httpClient = getHttpClient.GetPublicHttpClient();
var result = await httpClient.PostAsJsonAsync($"{AuthUrl}/register", user);
if (!result.IsSuccessStatusCode) return new GeneralResponse(false, "Error occurred");
return await result.Content.ReadFromJsonAsync()!;
}
public async Task SignInAsync(Login user)
{
var httpClient = getHttpClient.GetPublicHttpClient();
var result = await httpClient.PostAsJsonAsync($"{AuthUrl}/login", user);
if (!result.IsSuccessStatusCode) return new LoginResponse(false, "Error occurred");
return await result.Content.ReadFromJsonAsync()!;
}
public Task RefreshTokenAsync(RefreshToken token)
{
throw new NotImplementedException();
}
public async Task GetWeatherForecast()
{
var httpClient = getHttpClient.GetPrivateHttpClient();
var result = await httpClient.GetFromJsonAsync("api/weatherforecast");
return result!;
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... mjsonasync