Skip to main content
 首页 » 编程设计

c#之是否可以通过编程方式填写 Ajax 表单

2024年01月26日3452php

我正在做一些自动化工作,并且可以在网站上四处走动并发布到 HTML 表单,但现在我要面对一个新的挑战,Ajax 表单。

由于没有可供阅读的源代码,我想知道是否可以在 C# 中以编程方式填写 Ajax 表单。我目前正在使用不可见的 axWebBrowser。

预先感谢您的帮助!

请您参考如下方法:

是的,但我建议使用不同的方法来请求/响应服务器页面,包括常规页面和 AJAX 处理程序页面。

在 C# 中,尝试使用 WebRequest/WebResponse或更专业的 HttpWebRequest/HttpWebResponse 类。

Ajax 只不过是一种技术的“花哨”名称,它允许 Javascript 向服务器发出 HTTP 请求,服务器通常会实现一些处理程序,为 Javascript 调用者(通常编码为 JSON)生成专门的轻量级内容。

因此,为了模拟 AJAX 调用,您所要做的就是检查您的目标应用程序(您要“发布”到的网页)并查看 AJAX 通信使用的格式 - 然后复制页面的 Javascript使用 WebREquest/WebResponse 类的 C# 行为。

参见 Firebug - 一个很棒的工具,允许您检查网页以确定它进行了哪些调用、对哪些页面以及这些页面的响应。它在检查 AJAX 调用方面也做得很好。

这是一个非常简单的示例,说明如何进行网络请求:

HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create("http://www.mysite.com"); 
 
using (HttpWebResponse resp = (HttpWebResponse)wReq.GetResponse()) 
{ 
   // NOTE: A better approach would be to use the encoding returned by the server in 
   // the Response headers (I'm using UTF 8 for brevity) 
   using (StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.UTF8)) 
   { 
       string content = sr.ReadToEnd(); 
       // Do something with the content 
   } 
}     

POST 也是一个请求,但使用不同的方法。参见 this page有关如何做一个非常简单的帖子的示例。

编辑 - 有关使用 Firebug 检查页面行为的详细信息

检查您尝试复制的页面的意思是使用工具(我在 Firefox 上使用 Firebug)来确定页面和服务器之间的信息流。

使用 Firebug,您可以使用“网络”和“控制台”面板来完成此操作。网络面板列出了浏览器在加载页面时执行的所有请求。而“控制台”将列出页面加载后发生的页面和服务器之间的通信。那些在页面加载后发生的通信本质上是您要复制的 AJAX 调用(注意:必须在 Firebug 中启用网络监控才能工作)

查看 Michael Sync's tutorial了解有关 Firebug 的更多信息,并通过控制台面板进行试验以了解有关 AJAX 请求的更多信息。

关于“使用 WebRequest/WebResponse 从 C# 复制页面的行为”——您必须意识到,正如我之前所说,Javascript AJAX 调用只不过是一个 HTTP 请求。这是 Javacript 在“幕后”或带外向 Web 服务器发出的 HTTP 请求。要复制它,它实际上与复制普通的 GET 或普通的 POST 没有什么不同,就像我上面展示的那样。这就是 Firebug 发挥作用的地方。使用它您可以查看请求,就像 Javascript 发出请求一样 - 查看控制台面板,看看请求消息是什么样子的。

然后您可以使用与上述相同的技术,使用 HttpWebRequest/HttpWebResponse 发出与 Javascript 相同类型的请求,只是从 C# 执行。

Gregg,我希望这能稍微澄清我的答案,但除此之外,我建议使用 Firebug,并可能更多地了解 HTTP 协议(protocol)的工作原理以及 AJAX 作为一项技术的工作原理。