如何正确添加WebRequest标头?

时间:2018-08-17 16:44:22

标签: c# .net webrequest

var webRequest = WebRequest.Create("https://vtopbeta.vit.ac.in/vtop/");
webRequest.Method = "GET";
webRequest.Timeout = 12000;
webRequest.Headers.Add("User-Agent",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");
string jsonResponse;
using (var s = webRequest.GetResponse().GetResponseStream())
{
    using (var sr = new StreamReader(s ?? throw new InvalidOperationException()))
    {
        jsonResponse = sr.ReadToEnd();
    }
}

我昨天写了这篇,效果很好。今天突然这不再起作用了。几乎有一个确切的问题Cannot set some HTTP headers when using System.Net.WebRequest,但是答案https://stackoverflow.com/a/4752359/4427870说我不能使用User-Agent标头,但实际上是前一天使用的。

我得到的错误:System.ArgumentException: 'The 'User-Agent' header must be modified using the appropriate property or method. Parameter name: name'

我想使用WebRequest而不是WebClientHttpWebRequest

1 个答案:

答案 0 :(得分:3)

您需要直接设置UserAgent,改用CreateHttp返回HttpWebRequest,然后您可以这样做:

webRequest.UserAgent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36";

UserAgent是受限制的标头,必须通过属性进行设置,其中列出了所有受限制的标头here