C#HttpWebRequest没有得到正确的页面

时间:2015-02-21 10:30:32

标签: c# httpwebrequest

我正在使用以下代码来获取网页:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.UserAgent = "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36";
                request.Method = "GET";
                response = request.GetResponse();
                reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                result = reader.ReadToEnd();

它通常有效,但我有一个页面,我必须解析,这给了我悲伤。我不能直接链接页面(遗憾的是它不能被外部用户访问)但问题是这样的:我从浏览器检查了源代码,页面头部有以下标记:

<link rel="alternate" type="application/rss+xml" title="blah blah blah title blah bla" href="http://url_of_the_site/feed/" />

基本上我从HttpRequest返回的页面实际上是该href中指示的页面,它是该站点的RSS源的链接,而不是获取我请求的实际页面。这就像网站“感知”我的请求特有的东西,并认为我是一个RSS客户端而不是浏览器,或类似的东西。

为什么会发生这种情况?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

执行来自运行的客户端(浏览器)和不起作用的客户端(您的代码)的请求。观察与Fiddler的不同之处。逐个删除它们直到它开始工作。

答案 1 :(得分:-1)

对HttpRequests使用xNet,例如

using(var request=new HttpRequest()){
    var response =request.Get("Your link");
    response=request.Post("link","data");
}