Как настроить User-Agent во время выполнения с refit?
Если мой пользовательский агент является постоянной строкой, я могу использовать [Headers("User-Agent: Awesome Octocat App")]
установить это.
Тем не менее, Мой пользовательский агент генерируется методом (потому что он включает в себя версию устройства и ОС), что означает, что я не могу поместить его в Headers
приписывать.
Другой упомянутый метод такой же, как описанный в разделе " Динамические заголовки ", который менее чем оптимален, поскольку для меня это глобальный заголовок. Я бы предпочел не добавлять этот заголовок вручную в более 60 методов API.
Как бы я поступил так? Это поддерживаемый сценарий? Использование настраиваемого HttpClient является приемлемым решением (если возможно).
Я также открыт для других подобных продуктов, если вы знаете, что-либо, что может служить моей цели.
1 ответ
Чтобы установить заголовки по умолчанию во время выполнения, вы можете использовать DefaultRequestHeaders
собственность на HttpClient
пример.
Примерно так будет работать:
// This example uses http://httpbin.org/user-agent,
// which just echoes back the user agent from the request.
var httpClient = new HttpClient
{
BaseAddress = new Uri("http://httpbin.org"),
DefaultRequestHeaders = {{"User-Agent", "Refit"}}
};
var service = RestService.For<IUserAgentExample>(httpClient);
var result = await service.GetUserAgent(); // result["user-agent"] == "Refit"
// Assuming this interface
public interface IUserAgentExample
{
[Get("/user-agent")]
Task<Dictionary<string, string>> GetUserAgent();
}