C# http 请求 headers 带冒号 .Net 4.0

C# httprequest headers wiht a colon .Net 4.0

当使用 chrome 浏览器的 F12 工具检查第三方 api 时,我发现列出了几个有趣的 headers:

:authority:m.somedomain.com
:method:GET
:path:/api/somevalues
:scheme:https

还有一些headers我熟悉的,比如accept,accept-encoding等

我正在使用 .Net 4.0 发出 http/https 请求。尝试添加以冒号开头的 headers 时,第一项会引发错误:

        httpRequest.Headers.Add(":authority", "m.somedomain.com");
        httpRequest.Headers.Add(":method", "get");
        httpRequest.Headers.Add(":path", sPath);
        httpRequest.Headers.Add(":scheme", "https");

错误信息:

Specified value has invalid HTTP Header characters.

经过一番搜索,我找到了一篇关于 http/2 的文章。但是在 .NET 4.0 中只有 http/1.0 和 http/1.1 可用。

这是否意味着我需要升级到更新的 .NET 版本?

提前致谢。

可能吧。 http/2 从 .NET 版本 4.6.2 开始支持。

单击“项目”选项卡,然后单击底部的 select 属性。然后将您的 .NET 版本更改为 4.6.2。

此外,我 99.9% 确定您不应该在 header 中包含分号。

进一步:

httpRequest.Headers.Add(":method", "get");

request-method 不应定义在 header 中。照这样做。

httpRequest.Method = "GET";

该方案通常由您的 url 的前缀表示。即:

string webAddr = "https://www.google.com/";
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);