我有一个应用程序的想法,这将真正帮助我在工作,但我不确定是否可能。
我想运行一个要求输入值的C#桌面应用程序。提供值时,应用程序将打开浏览器,转到网页并将值添加到在线网站上的表单中。然后提交表单并加载包含结果表的新页面。然后,我想从页面源中提取结果表并编写代码来解析结果值。
用户在实际浏览器中看到这种情况并不重要。换句话说,如果有一种方法可以通过读取HTTP请求来实现,那就太好了。
我遇到的最大问题是将值放入表单,然后在提交表单并加载下一页后检索页面源。
任何帮助都非常感激。
由于
答案 0 :(得分:1)
这绝对是可行的,您不需要使用实际的Web浏览器。您只需使用System.Net.WebClient发送HTTP请求并获得HTTP响应即可。
我建议使用wireshark(或者你可以使用Firefox + Firebug)它允许你看到HTTP请求和响应。通过查看HTTP流量,您可以准确地看到应该如何传递HTTP请求以及应该设置哪些参数。
答案 1 :(得分:1)
前提是您只在法律背景下使用它:
通常,Web表单通过POST请求发送到Web服务器,特别是一些处理它的脚本。您可以查看表单页面的HTML代码,找出表单的目标(表单的操作)。
然后,您可以使用C#中的HttpWebRequest
“假装您是表单”,发送包含所有必需参数的POST请求(将它们添加到HTTP标头中)。
因此,您将获得目标页面的源代码,因为它将被发送到浏览器。你可以解析这个。
答案 2 :(得分:0)
您无需让浏览器参与其中。 WebClient应该做你需要的一切。当您使用浏览器提交表单时,您需要查看实际发布的内容,然后您应该能够使用WebClient发出POST请求并将结果页面检索为字符串。
WebClient constructor的文档有一个很好的例子。
答案 3 :(得分:0)
参见例如this question至少在数据检索方面有一些指示。在你完成这个之前,你会对http protocol了解更多......
答案 4 :(得分:0)
如果您甚至不希望用户做任何事情,为什么要通过网页执行此操作? 网页纯粹是为了与用户交互,如果您只是想要数据传输,请使用WCF。
使用Wireshark的@Brian将导致一个非常生气的网络管理员,确保你实际上被允许使用它。