Xamarin Добавление полупостоянных заголовков для вызова API Refit - PullRequest
0 голосов
/ 14 июля 2020

[Обновлено]

Благодаря Джейсону в комментариях я смог найти решение. Вы можете указать новый 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...