0

[更新しました]

コメントのジェイソンのおかげで、解決策を見つけることができました。クライアント ハンドラーを受け取る残りのサービスを作成するときに、新しい 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;
4

0 に答える 0