ASP.NET利用webclient获取页面源代码的解决方

王朝asp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

页面中包括DataGrid时,利用webclient获取页面源代码的解决方

主要问题,利用webclent获取页面源代码时,当页面中含有datagrid,并且该控件使用了自带的分页功能时,正常的方法只能获取第一页面的数据,其它页面的数据取不到,以下是解决方法。

方法一:

主要思路是利用webclient,post数据到服务来取得数据,这里主要用了一个小工具可以分析页面的组成及运行过程,分析中发现当点击下一页时,会Post三个参数过去, 分别是:__EVENTTARGET、__EVENTARGUMENT、__VIEWSTATE。这里__VIEWSTATE参数在从打开第一页数据时取得,__EVENTTARGET为要调用控件的名称(可以通过httpwatch来获取) ,__EVENTARGUMENT是调用事件时的参数,代码如下:

string result="";

result = this.loadtop ("http://localhost/ProjectInfo.aspx?JOBNO1=2001-09110");

string vie = GetTagContent(result,"name=\"__VIEWSTATE\" value=\"","\" />");

vie=vie.Replace ("name=\"__VIEWSTATE\" value=\"","");

vie=vie.Replace ("\" />","");

WebClient a = new WebClient();

NameValueCollection na = new NameValueCollection();

na.Add("__EVENTTARGET","NewHouseGridModule1:ModuleSplitPage:lbnNextPage");

na.Add("__VIEWSTATE",vie);

byte [] ss = a.UploadValues("http://localhost/ProjectInfo.aspx?JOBNO1=2001-09110","POST",na);

Encoding encode=Encoding .GetEncoding ("utf-8");

result=encode.GetString(ss);

方法二:

利用axWebBrowser控件,下载第一页,然后在最下面这如下代码:

<script language='javascript' type='text/javascript'>__doPostBack('NewHouseGridModule1$ModuleSplitPage$lbnNextPage','');</script>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航