【发布时间】:2021-03-31 16:58:15
【问题描述】:
我的客户端代码调用了一个 API,我试图从响应标头中获取返回的 ETag 值。如果我使用 Fiddler,我可以看到响应包含 ETag 标头,如果我使用 Postman 进行 API 调用,我可以看到 ETag 标头,但是无论我采用什么方法尝试检索代码中的标头,我得到的只是一个空。
本质上是 API 调用;
// create request object
var request = new HttpRequestMessage(HttpMethod.Get, url);
// add authorization header
request.Headers.Authorization = new AuthenticationHeaderValue("bearer", await GetBearerToken());
// send request
HttpResponseMessage response = await _client.SendAsync(request);
Fiddler Response Header showing Etag
邮递员的回应是;
我花了几个小时从网络上搜索和尝试示例,但无论我尝试什么,我都无法获得 ETag 标头。
使用下面的示例代码,我确实获得了前 2 个标头,如返回的 Postman 响应标头中所示,但不是 ETag 标头/值。
String allResponseHeaders = Enumerable
.Empty<(String name, String value)>()
.Concat(
response.Headers
.SelectMany(kvp => kvp.Value
.Select(v => (name: kvp.Key, value: v))
))
.Concat(
response.Content.Headers
.SelectMany(kvp => kvp.Value
.Select(v => (name: kvp.Key, value: v))
))
.Aggregate(
seed: new StringBuilder(),
func: (sb, pair) => sb.Append(pair.name).Append(": ").Append(pair.value).AppendLine(),
resultSelector: sb => sb.ToString()
);
我正在使用 Visual Studio、Blazor 和 aspnetcore 5.0,我希望使用 IndexDB 生成 PWA,并使用 ETag 来减少数据下载。
任何有关如何获取 Etag 标头的帮助将不胜感激...
【问题讨论】:
标签: c# blazor httpclient response-headers