来自c#的Http请求类型不匹配

时间:2010-06-04 05:55:37

标签: c# asp.net html httprequest

当我尝试从此页面请求信息并将其写入txt文件时,我似乎被重定向到错误页面。它说'抱歉,键入不匹配'。我怎样才能获得这些信息。

namespace webscrape
{
    class Program
    {
        [STAThread]
        static void Main(string[] args) {

            try {
                // Modify as appropriate:
                const string baseUri = "http://www.rogersmushrooms.com/gallery/default~GID~253~chr~a.asp";

                // This cookie container will persist the ASP.NET session ID cookie
                CookieContainer cookies = new CookieContainer();

                // our third request is for the actual webpage after the login.
                HttpWebRequest request =
                (HttpWebRequest)WebRequest.Create(baseUri);
                request.Method = "GET";
                request.CookieContainer = cookies;
                //get the response object, so that we may get the session cookie.
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                StreamReader reader =
                    new StreamReader(response.GetResponseStream());

                // and read the response
                string page = reader.ReadToEnd();

                reader.Close();

                // create a writer and open the file
                TextWriter tw = new StreamWriter("anchor.txt");

                // write a line of text to the file
                tw.WriteLine(page);

                // close the stream
                tw.Close();

                // our webpage data is in the 'page' string.
                Console.WriteLine(page);
            }

            catch(Exception ex) {
                Console.WriteLine(ex);
            }
        }

    }
}

1 个答案:

答案 0 :(得分:3)

您在HTML中遇到的“类型不匹配”是因为他们试图通过限制您的用户代理来阻止您抓取网站。

在拨打电话前将此内容添加到您的请求中:

request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)"; 

这应该会为您提供所需的信息。