Я впервые пытаюсь использовать HttpClient в .NET 8, но у меня не получается работать правильно. Вероятно, мне не хватает какой-то мелочи, но я изо всех сил пытаюсь это понять.
У меня есть внутренний API моей компании, к которому я пытаюсь подключиться. Если я запущу API в Postman, я получу ожидаемые результаты. Однако с моей текущей настройкой кода я делаю вызов, и он не получает никаких ошибок, но он также не получает никаких данных и кажется, что он просто выходит из программы. Он также не попадает в try...catch.
Я добавил следующий пакет NuGet:
Я добавил этот код в свой файл Program.cs:
var workbrainApiUrl = context.Configuration["WorkbrainApiURL"] ?? string.Empty;
var workbrainClientId = context.Configuration["WorkbrainApi:Username"] ?? string.Empty;
var workbrainTransactionId = context.Configuration["WorkbrainApi:Password"] ?? string.Empty;
services.AddHttpClient("workbrainAPI", (serviceProvider, client) =>
{
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.Timeout = TimeSpan.FromSeconds(30);
client.DefaultRequestHeaders.Add("X-Client-ID", workbrainClientId);
client.DefaultRequestHeaders.Add("X-Transaction-ID", workbrainTransactionId);
client.BaseAddress = new Uri(workbrainApiUrl);
});
Это код, который я использую для фактического вызова. Опять же, никаких ошибок, никаких переходов в часть исключения try...catch. При отладке я могу следовать коду из файла Program.cs вплоть до вызова GetFromJsonAsync, где все кажется правильным, URL-адрес API и ClientID заполнены правильно, а затем он просто завершает работу. . Никаких ошибок или перехода мимо try...catch.
try
{
var apiEndPoint = $"service/clock/getGroupInfo?lastUpdateDate=10-02-2024"
var client = _factory.CreateClient("workbrainAPI");
var response = await client.GetFromJsonAsync(apiEndPoint);
}
catch (Exception ex)
{
await _log.LogError($"Error {ex.Message}");
throw;
}
Пример ответа на мой звонок Почтальону.
{
"date": "Mon Nov 04 08:57:27 CST 2024",
"result": [
{
"readerGroupId": 12474,
"readerGroupName": "Southwest Group",
"readerGroupDescription": "Used for the Southwest group",
"readerGroupType": "CLOCK SERVER",
"readerGroupStatus": null,
"lastUpdateUTC": "2024-10-03 19:56:55"
}
],
"message": "Successfully Returned reader Groups.",
"isSuccess": "true",
"statusCode": "200 OK"
}
Это мой класс:
public class ReaderGroupResponse
{
public string date { get; set; } = string.Empty;
public List result { get; set; } = new List();
public string message { get; set; } = string.Empty;
public bool isSuccess { get; set; } = false;
public string statusCode { get; set; } = string.Empty;
}
public class ReaderGroup
{
public int ReaderGroupId { get; set; }
public string ReaderGroupName { get; set; } = string.Empty;
public string ReaderGroupDescription { get; set; } = string.Empty;
public string ReaderGroupType { get; set; } = string.Empty;
public string LastUpdateUTC { get; set; } = string.Empty;
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -debugging