我想从一个使用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返回,从而消除了屏幕抓取的需要,并使客户端处理变得更加容易。