C# 带有冒号.Net 4.0的C httprequest头

C# 带有冒号.Net 4.0的C httprequest头,c#,.net-4.0,http-headers,httprequest,C#,.net 4.0,Http Headers,Httprequest,使用chrome浏览器的F12工具检查第三方api时,我发现有几个有趣的标题: :authority:m.somedomain.com :method:GET :path:/api/somevalues :scheme:https 以及一些我熟悉的标题,如接受、接受编码等 我正在使用.NET4.0进行http/https请求。尝试添加以冒号开头的这些标题时,第一个项目会引发错误: httpRequest.Headers.Add(":authority", "m.somedoma

使用chrome浏览器的F12工具检查第三方api时,我发现有几个有趣的标题:

:authority:m.somedomain.com
:method:GET
:path:/api/somevalues
:scheme:https
以及一些我熟悉的标题,如接受、接受编码等

我正在使用.NET4.0进行http/https请求。尝试添加以冒号开头的这些标题时,第一个项目会引发错误:

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

指定的值具有无效的HTTP头字符

经过搜索,我找到了一篇关于http/2的文章。然而,在.NET4.0中,只有http/1.0和http/1.1可用

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


提前谢谢。

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

单击项目选项卡并选择底部的属性。然后将.NET版本更改为4.6.2

此外,我99.9%确信您不应该在标题中包含分号

进一步:

httpRequest.Headers.Add(":method", "get");
不应在标头中定义请求方法。照这样做

httpRequest.Method = "GET";
该方案通常由url的前缀表示。即:

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