gpt4 book ai didi

c# - 如何在运行时通过 retrofit 设置用户代理?

转载 作者:太空狗 更新时间:2023-10-30 00:51:38 26 4
gpt4 key购买 nike

如果我的用户代理是一个常量字符串,我可以使用 [Headers("User-Agent: Awesome Octocat App")] 来设置它。

但是,我的用户代理是由一个方法生成的(因为它包括设备和操作系统版本),这意味着我不能将它放在 Headers 属性中。

另一种提到的方法如动态 header 部分所述,这不是最佳方法,因为这对我来说是一个全局 header 。我不想手动将此 header 添加到 60 多个 API 方法中。

我该怎么做呢?它是受支持的场景吗?使用自定义 HttpClient 是一个可接受的解决方案(如果可能)。

如果您知道任何可能符合我的目的,我也愿意接受其他类似产品。

最佳答案

要在运行时设置默认 header ,您可以在 HttpClient 实例上使用 DefaultRequestHeaders 属性。

像这样的东西会起作用:

// 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();
}

关于c# - 如何在运行时通过 retrofit 设置用户代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25864153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com