[Обновлено]
Благодаря Джейсону в комментариях я смог найти решение. Вы можете указать новый httpClient при создании остальной службы, которая будет принимать обработчик клиента. В клиентском обработчике перезапишите метод SendAsyn c и добавьте туда нужные заголовки запроса для каждого вызова. Код ниже.
HttpClientHandler
class AuthenticatedHttpClientHandler : HttpClientHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
request.Headers.Add("platform", Constants.platform);
request.Headers.Add("build", "72");
request.Headers.Add("User-Agent", Constants.platform + " RELEASE");
return await base.SendAsync(request,cancellationToken).ConfigureAwait(false);
}
}
Создание клиента
authenticationAPI = RestService.For<IAuthenticationAPI>(new HttpClient(new AuthenticatedHttpClientHandler()) { BaseAddress = new Uri(Constants.RestUrl) });
[Вопрос] Я хочу добавить платформу в мои вызовы API refit в заголовке, но я не Я не хочу передавать его при вызове метода. Есть ли способ добавить заголовок, который создается во время выполнения, ко всем вызовам API? Я пробовал это, но это не работает, так как это не константа.
[Headers("Content-Type: application/json", Constants.platformHeader)]
Отдельный класс констант
public static string platform = Device.RuntimePlatform == Device.Android? "android" : "iOS";
public const string platformHeader = "platform: " + platform;