HttpWebRequest - 发布__EVENTTARGET和__EVENTARGUMENT

时间:2014-06-03 14:53:00

标签: c# asp.net grid httpwebrequest

我想阅读使用Asp.net GridView contorl和分页的网站上的所有内容。现在,使用带有必需参数的__dopostback,使用Asp.Net网格的POST方法完成分页。

我尝试使用HttpWebRequest使用以下代码读取分页数据,但它总是抛出" 500内部服务器错误。"

  public string GetPageData(int page)
    {
        var request = (HttpWebRequest)WebRequest.Create("http://localhost:61141/Default.aspx");
        string postData = "__EVENTTARGET=ctl00$MainContent$GridView1&__EVENTARGUMENT=Page$"+ page;


        request.Method = "POST";
        var bt = System.Text.Encoding.ASCII.GetBytes(postData);
        request.ContentLength = bt.Length;
        request.ContentType = "application/x-www-form-urlencoded";
        request.UserAgent = " Mozilla/4.0 (compatible; MSIE 6; Windows NT 5) ";
        request.KeepAlive = false;
        request.AllowWriteStreamBuffering = true;

        string strResult;
        Stream stream = request.GetRequestStream();
        stream.Write(bt, 0, bt.Length);
        stream.Close();

        var response = request.GetResponse();
        var sr = new StreamReader(response.GetResponseStream(), true);
        strResult = sr.ReadToEnd();

        return strResult;
    }

请建议任何解决方法。 谢谢你提前。

1 个答案:

答案 0 :(得分:1)

WebForms分页依赖于JavaScript,因此旨在在Web浏览器中执行,而不是像您在此处通过自定义调用执行。为什么不在Web应用程序中使用set up a Web API endpoint或其他启用REST的端点?这样做的另一个好处是,您可以将结果作为XML或JSON返回,从而消除了对屏幕抓取的需求,并使客户端处理变得更加容易。

相关问题