Csharp/C#教程:为什么我的HttpWebRequest返回400 Bad请求?分享


为什么我的HttpWebRequest返回400 Bad请求?

以下代码因400错误请求exception而失败。 我的网络连接很好,我可以去网站,但我不能用HttpWebRequest得到这个uri。

private void button3_Click(object sender, EventArgs e) { WebRequest req = HttpWebRequest.Create(@"https://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(@"https://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)"; 

HttpWebRequest中设置UserAgentReferer

 var request = (HttpWebRequest)WebRequest.Create(@"https://www.youtube.com/"); request.Referer = "https://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的Proxy属性?

上述就是C#学习教程:为什么我的HttpWebRequest返回400 Bad请求?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1029935.html

(0)
上一篇 2022年1月13日
下一篇 2022年1月13日

精彩推荐