我在 .NET Http 客户端上使用 Furl.Http 包装器。对于每个请求,我的 API 都需要发送一个 User-Agent 和一个 Authorization 标头。
我想设置一次,而不是每次都声明。
我认为我能够做的是创建 FlurlClient 的实例并在其上设置标头,然后在每个请求之前 ResetToRoot,如以下示例代码所示:
var fc = new FlurlClient();
fc.WithHeader("User-Agent", "Keep/1.0");
var tokenModel = await
"https://app.tempuri.com".AppendPathSegment("auth")
.WithClient(fc)
.PostUrlEncodedAsync(new { username = "you", password = "secret"})
.ReceiveJson<TokenModel>();
fc.WithHeader("Authorization",
string.Format("Token {0}",tokenModel.Token));
fc.Url.ResetToRoot();
var userModel = await fc.Url
.AppendPathSegment("auth").GetJsonAsync<UserModel>();
Console.WriteLine(userModel.Username);
但是,似乎在RestToRoot()
不再发送标头之后。
这是设计使然吗?是否有更好的方法来确保在每个请求上发送这些标头?