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
而不是WebClient
或HttpWebRequest
。
答案 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。