2009-12-30 4 views
1

Я хочу, чтобы имитировать поведение класса WebTestRequest (в среде Visual Studio Test Tools), где он может вызывать зависимые запросы на основе ресурсов, на которые ссылаются ответы, полученные из оригинальный запрос.Анализ зависимых запросов в HTTP-ответе

Например, если я выдаю веб-запрос и получить ответ, делая это:

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-файлы, изображения и т. д.)

Есть ли простой способ сделать это? Я не решаюсь вручную сделать это, так как некоторые запросы ресурсов могут быть установлены программно и могут быть не очевидны при прямом анализе текста.

ответ

0

Используйте библиотеку анализатора html/sgml. Я не знаком с Visual Studio, но есть рамки для разбора html. Найдите один и посмотрите в API на предмет, связанный с поиском элементов.

+0

Чтобы быть ясным, я уже использую интерфейс IHTMLDocument3 для создания объекта документа для извлечения элементов html. Меня больше интересует выяснение того, какие зависимые запросы я должен выполнить, на основе ответа.Вы знаете о html-парсере, который позволил бы мне это сделать? –

+0

Похоже, вы хотите полноценный веб-движок. Webkit - это такая вещь. Если вам действительно нужно это, что я не уверен, что вы это сделали, тогда вы могли бы изучить это. Извините, я не могу больше помочь. – dlamotte

0

Я уверен, что сам WebTestRequest выполняет только «простой анализ текста», чтобы определить зависимые запросы, поскольку он не имеет представления о javascript. Поэтому, если вы должны были реализовать такой, то ваш код будет точно имитировать поведение.

Ниже приведен список всех элементов, я мог бы найти в беглом взгляде на спецификации HMTL 4, которые могут ссылаться на дополнительные ресурсы и, следовательно, должны были бы быть разобраны:

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

Не уверен, что он исчерпывающий или нет.

Кстати, мне любопытно, что вы закончили делать в конце.

EDIT:

некоторые из запросов ресурсов может быть установлен программно и не может быть очевидным на прямой текст разбора

Это фактически становится невозможным в какой-то момент, чтобы определить, зависимые запросы от разбора html-ответа, и я приведу вам пример: все, что было разработано с помощью Google Web Toolkit. В недавнем приложении GWT, которое я тестировал, было по существу no parsable html - все запущено из javascript. Извлечение очевидных названий путей (когда доступно) было даже не полезно, потому что на самом деле условная логика выбирала определенных иждивенцев, а не других.