使用WebClient示例

时间:2016-08-22 12:24:07

标签: c# asp.net web

我已经阅读了Stack Overflow上的所有相关帖子,虽然我是Web请求/响应编程领域的新手,但还没有找到有用的东西。

问题: 我有一个现有的应用程序,可以从网页上捕获数据。简单的webclient下载页面(webclient.downloadstring(url)),用于解析html并获取相关数据。效果很好。现在,我必须从此站点获取其他数据,但是包含数据的页面是包含ASP.NET JavaScript回发的信息列表,这些信息是表单提交的。

<a id="ctl00_ContentPlaceHolder1_GridViewSort_ctl02_LinkButton1" class="ui-btn ui-mini center noprint" href="javascript:__doPostBack(&#39;ctl00$ContentPlaceHolder1$GridViewSort$ctl02$LinkButton1&#39;,&#39;&#39;)">More Info</a>

我已使用开发人员工具从初始Web请求表单中捕获了所有相关输入值:

__EVENTARGUMENT: 
   __EVENTTARGET: ctl00%24ContentPlaceHolder1%24GridViewSort%24ctl03%24LinkButton1
   __EVENTVALIDATION: tpO...
   __VIEWSTATE: bI2vX...
   __VIEWSTATEENCRYPTED: 
   __VIEWSTATEGENERATOR: 5037098B
   ctl00%24ContentPlaceHolder1%24hfTicket: 0
   ctl00%24ucheader2%24m_textBoxSearch: Search%E2%80%A6

并尝试使用WebClient.UploadData(url,data)模仿帖子,其中数据被转换为byte []的ascii数组,如其他示例所示。我也试图捕获标题和cookie,但这是事情开始分崩离析的地方。我发现的例子对我不起作用。

有没有完成此任务的人请提供我可以开始的代码示例。我也下载并试过WatIn。这可以作为临时解决方案,但浏览器可用性限制将需要太多的维护和干预。我真的想弄清楚如何使用.NET解决方案。

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

您是否考虑过使用Selenium通过真实的浏览器自动执行该操作?

通过手动请求听起来非常棘手,如果您真的想这样做,我建议您使用Fiddler尝试让您的请求看起来尽可能多。