如何在 HttpRequestMessage 中包含 If-None-Match 标头

2024-01-08

我有一个 HttpRequestMessage 如下:

string URI = "http://" + MyHostName.DisplayName.ToString() + "/datastore/";

HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, URI);
string Params = "";
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
request.Headers.AcceptCharset.Add(new StringWithQualityHeaderValue("utf-8", 0.7));
request.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue("en-us", 0.5));
request.Content = new StreamContent(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(Params)));
request.Content.Headers.Add("Content-Type", "application/x-www-form-urlencoded");

try
{
    var result = await client.SendAsync(request);
    var content = await result.Content.ReadAsStringAsync();
    return content.ToString();
}
catch (HttpRequestException)
{
    Connected = false;
    return "";
}

我想添加一个If-None-Match我的请求的标头,其值如下'8001'举个例子。但当我查找时HttpRequestHeaders.IfNoneMatch https://msdn.microsoft.com/en-us/library/system.net.http.headers.httprequestheaders.ifnonematch(v=vs.118).aspx你只能获取它而不能设置它。

有任何想法吗?

编辑1:添加系统在Windows 10上运行UWP


解决方案似乎是自定义添加 If-None-Match 标头

备查。服务器可能不接受像“8001”这样的引号中的 ETag。

为了解决这个问题,你可以使用

            request.Headers.TryAddWithoutValidation("If-None-Match", "8001");

这将导致 If-None-Match 标记为 8001

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 HttpRequestMessage 中包含 If-None-Match 标头 的相关文章

随机推荐