为什么我的HttpWebRequest不会返回400错误的请求?
-
22-08-2019 - |
题
下面的代码失败,400坏请求异常。我的网络连接是好的,我可以去的网站,但我不能HttpWebRequest的得到这个URI。
private void button3_Click(object sender, EventArgs e)
{
WebRequest req = HttpWebRequest.Create(@"http://www.youtube.com/");
try
{
//returns a 400 bad request... Any ideas???
WebResponse response = req.GetResponse();
}
catch (WebException ex)
{
Log(ex.Message);
}
}
解决方案
首先,施放的WebRequest到HttpWebRequest的是这样的:
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(@"http://www.youtube.com/");
然后,添加这行代码:
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
其他提示
将用户代理和的Referer 在的HttpWebRequest
var request = (HttpWebRequest)WebRequest.Create(@"http://www.youtube.com/");
request.Referer = "http://www.youtube.com/"; // optional
request.UserAgent =
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; " +
"Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; " +
".NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; " +
"InfoPath.2; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)";
try
{
var response = (HttpWebResponse)request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
var html = reader.ReadToEnd();
}
}
catch (WebException ex)
{
Log(ex);
}
有可能是这个问题的原因很多。你有关于任何引发WebException更多的细节?
原因之一,这我以前碰到,就是你有一个坏的用户代理字符串。有些网站(谷歌的实例)检查请求从已知的用户代理来防止自动机器人撞到自己的网页。
事实上,你可能要检查的是YouTube的用户协议不会做你正在做什么妨碍你。如果确实如此,那么你在做什么,可以更好地通过批准的渠道,如Web服务去完成。
也许你已经有了一个代理服务器上运行,并且您还没有设置的代理财产的HttpWebRequest?
不隶属于 StackOverflow