1

我想模拟 WebTestRequest 类的行为(在 Visual Studio 的测试工具框架中),它可以根据从原始请求获得的响应中引用的资源调用依赖请求。

例如,如果我发出 Web 请求并通过执行以下操作获得响应:

string url = "http://www.mysite.com";
WebRequest request = WebRequest.Create(url);
using (WebResponse response = request.GetResponse())
{
    StreamReader reader = new StreamReader(response.GetResponseStream()); 
    string responseText = reader.ReadToEnd();
}

我希望能够解析responseText并查看是否对其他资源(如 js/css 文件、图像等)有任何请求

有没有一种简单的方法可以做到这一点?我对手动执行此操作犹豫不决,因为某些资源请求可能以编程方式设置,并且在简单的文本解析中可能并不明显。

4

2 回答 2

0

使用 html/sgml 解析器库。我不熟悉 Visual Studio,但那里有解析 html 的框架。找到一个并在 API 中查找与查找元素相关的内容。

于 2009-12-30T17:36:45.893 回答
0

我有理由确定 WebTestRequest 本身只进行“简单的文本解析”来确定依赖请求,因为它不知道 javascript。因此,如果您要实现此类,那么您的代码将准确地模拟行为。

以下是我在粗略浏览 HMTL 4 规范中可以找到的所有元素的列表,这些元素可以引用其他资源,因此需要解析:

  • <link href=
  • <img src=
  • <script src=
  • <iframe src=
  • <object data=
  • <area href=

不确定它是否详尽。

顺便说一句,我很好奇你最后做了什么。

编辑:

一些资源请求可能以编程方式设置,在简单的文本解析中可能并不明显

事实上,在某些时候,通过解析 html 响应来确定依赖请求是不可能的,我将给您举个例子:使用 Google Web Toolkit 开发的任何东西。在我最近测试的一个 GWT 应用程序中,基本上没有可解析的 html —— 一切都是从 javascript 运行的。提取明显的路径名称(如果可用)甚至没有用,因为实际上条件逻辑是选择某些依赖项而不是其他依赖项。

于 2011-11-10T06:31:22.520 回答