HttpWebRequest - Post with __EVENTTARGET and __EVENTARGUMENT



我想从一个使用Asp.net GridView控件与分页的网站读取所有内容。现在,分页是由Asp. js使用POST方法完成的。使用__dopostback和必需的参数创建网格。

我试图用以下代码使用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;
    }

请建议任何解决方法。

WebForms分页依赖于JavaScript,因此打算在web浏览器中执行,而不是像这里那样通过自定义调用。为什么不在Web应用程序中设置Web API端点或其他支持rest的端点呢?这还有一个额外的好处,您可以将结果作为XML或JSON返回,从而消除了屏幕抓取的需要,并使客户端处理变得更加容易。

相关内容

最新更新