程序使用了HttpWebRequest类:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(PageUrl); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream resStream = response.GetResponseStream(); Encoding enc = Encoding.GetEncoding("GB2312"); StreamReader sr = new StreamReader(resStream, enc);
将获取到的内容显示出来之后(网址是http://www.163.com),发现内容比浏览器中打开的网易页面源码少很多,且其中有“因为您的ISP供应商并没有遵循标准的互联网协议,我们对您的访问作出限制,敬请谅解。您可以通过以下链接继续访问”等等字样。不明所以,所以只好假设是Request的User-Agent设置有问题。
在chrome调试中将请求的User-Agent字段拷出:
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153
用request.header.add()方法添加,结果却报错:必须使用适当的属性或方法修改此标头。试了半天,才发现原来一些常用header已经被request固化,比如此处添加User-Agent必须要用request.UserAgent属性来设置,而只有不太常用的一些header才可用Add方法添加。
添加之后,运行通过。特此记录。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/569.html