2009-12-30 4 views
1

Je souhaite simuler le comportement de la classe WebTestRequest (dans l'infrastructure Outils de test de Visual Studio), où elle peut appeler des requêtes dépendantes basées sur des ressources référencées dans la réponse obtenue à partir de la demande originale.Analyse des requêtes dépendantes dans une réponse Web http

Par exemple, si je lance une requête Web et obtenir la réponse en faisant ceci:

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(); 
} 

Je voudrais être en mesure d'analyser responseText et voir s'il y a des demandes à d'autres ressources (comme js/css files, images, etc.)

Y a-t-il un moyen facile de le faire? J'hésite à le faire manuellement, car certaines des demandes de ressources peuvent être configurées par programme et peuvent ne pas être évidentes sur une simple analyse de texte.

Répondre

0

Utilisez une bibliothèque d'analyseurs html/sgml. Je ne suis pas familier avec Visual Studio, mais il existe des frameworks pour analyser le html. Trouvez-en un et recherchez dans l'API quelque chose en rapport avec la recherche d'éléments.

+0

Pour être clair, j'utilise déjà l'interface IHTMLDocument3 pour créer un objet document pour l'extraction d'éléments html. Je suis plus intéressé par trouver quelles requêtes dépendantes je devrais exécuter, basé sur la réponse.Connaissez-vous un analyseur html qui me permettrait de faire cela? –

+0

On dirait que vous voulez un moteur web à part entière. Webkit est une chose. Si vous en avez vraiment besoin, ce dont je ne suis pas sûr, alors vous pourriez vous pencher là-dessus. Désolé, je ne peux pas être plus utile. – dlamotte

0

Je suis raisonnablement certain que WebTestRequest ne fait lui-même qu'une "simple analyse de texte" pour déterminer les demandes dépendantes, puisqu'il n'a aucune connaissance de javascript. Donc, si vous deviez implémenter un tel code, votre code simulerait exactement le comportement.

Voici une liste de tous les éléments que je pouvais trouver en un coup d'oeil rapide de la spécification HMTL 4 qui peuvent se référer à des ressources supplémentaires et aurait donc besoin d'être analysé:

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

Vous ne savez pas si c'est exhaustif ou non. En passant, je suis curieux de savoir ce que vous avez fini par faire à la fin.

EDIT:

certaines des demandes de ressources peuvent être créées par programme et peut ne pas être évidente sur un texte simple Parse

Il devient en effet impossible à un moment donné pour déterminer les demandes dépendantes de l'analyse d'une réponse html, et je vais vous donner un exemple: tout ce qui a été développé avec Google Web Toolkit. Dans une récente application GWT que j'ai testé, il y avait essentiellement aucun parsable html - tout est exécuté à partir de javascript. Extraire des noms de chemin évidents (quand ils étaient disponibles) n'était même pas utile parce qu'en réalité la logique conditionnelle sélectionnait certaines dépendantes et pas d'autres.