[更新しました]
コメントのジェイソンのおかげで、解決策を見つけることができました。クライアント ハンドラーを受け取る残りのサービスを作成するときに、新しい httpClient を指定できます。クライアント ハンドラーで SendAsync メソッドを上書きし、そこに呼び出しごとに必要な要求ヘッダーを追加します。以下のコード。
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) });
[質問] ヘッダーの refit API 呼び出しにプラットフォームを追加したいのですが、メソッド呼び出しで渡す必要はありません。実行時に作成されるヘッダーをすべての API 呼び出しに追加する方法はありますか? これを試しましたが、定数ではないため機能しません。
[Headers("Content-Type: application/json", Constants.platformHeader)]
個別の定数クラス
public static string platform = Device.RuntimePlatform == Device.Android? "android" : "iOS";
public const string platformHeader = "platform: " + platform;