2009-09-24 10 views
36

Y at-il un moyen de connecter Fiddler pour capturer les requêtes et les réponses effectuées avec .NET HttpWebRequest et HttpWebResponse?Obtenir les demandes HTTP et les réponses effectuées à l'aide de HttpWebRequest/HttpWebResponse pour afficher dans Fiddler

+0

Peut-être que je ne comprends pas votre question, mais Fiddler est un débogueur Web (proxy). Si vos demandes ont été envoyées via le proxy, elles le capturent. Veuillez décrire ce que vous (vraiment) voulez faire. – tuergeist

Répondre

10

Si vous ne pouvez pas, Wireshark est un outil similaire qui fonctionne au niveau du matériel réseau, de sorte qu'il peut capturer le trafic réseau de n'importe quelle application. Wireshark est un peu plus complexe que Fiddler, et plus général, mais c'est un excellent outil à avoir dans votre boîte à outils, et mérite d'être étudié un peu plus tard.

+0

@Charming Anonyme Downvoter: Avez-vous manqué le morceau où j'ai dit "Si vous ne pouvez pas"? Pardonnez-moi d'essayer d'être utile. – RichieHindle

+1

@Richie: J'ai neutralisé le downvote car je ne peux pas comprendre pourquoi. – tuergeist

+1

@tuergeist: Merci. Vous êtes un gentleman. – RichieHindle

37

La FAQ Fiddler donne la réponse à cette question.

Vous acheminez essentiellement votre trafic HTTP via Fiddler (par exemple, utilisez Fiddler comme proxy).

Voici quelques liens qui vous aideront à:
Fiddler Web Debugging - Configuring Clients

Ce qui dans les liaisons tour à ici:
Take the Burden Off Users with Automatic Configuration in .NET

Vous pouvez y parvenir via certains paramètres de configuration dans le fichier web.config (pour un ASP application .NET) comme ceci:

<system.net> 
    <defaultProxy> 
    <proxy 
     proxyaddress="http://[your proxy address and port number]" 
     bypassonlocal="false" 
    /> 
    </defaultProxy> 
</system.net> 

Voir here pour plus de détails sur le <defaultProxy>.

Vous pouvez également utiliser un objet WebProxy dans votre code en utilisant quelque chose comme:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[ultimate destination of your request]"); 
WebProxy myproxy = new WebProxy("[your proxy address]", false); 
request.Proxy = myproxy; 
request.Method = "GET"; 
HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 

Voir here pour plus de détails sur la classe WebProxy.

Notez également l'importance « mise en garde » qui est mentionné dans la FAQ Fiddler:

Pourquoi ne vois-je pas le trafic envoyé à http://localhost ou http://127.0.0.1?
IE7 et le .NET Framework sont de ne pas envoyer codés en dur pour les demandes Localhost par des procurations, et comme une procuration, Fiddler ne recevront pas ce trafic . La solution consiste à utiliser votre nom d'ordinateur comme nom d'hôte à la place de Localhost ou 127.0.0.1. Ainsi, pour instance, plutôt que de frapper , à la place visiter http://machinename:8081/mytestpage.aspx.

... Ou, si vous utilisez Fiddler v2.1.8 ou plus tard, il suffit d'utiliser http://ipv4.fiddler pour frapper localhost sur l'adaptateur IPv4, ou utiliser http://ipv6.fiddler pour frapper localhost sur l'adaptateur IPv6.Ce fonctionne particulièrement bien avec le serveur Web de test Visual Studio (nom de code: Cassini) parce que le serveur de test seulement écoute sur l'adaptateur de bouclage IPv4.

Enfin, vous pouvez personnaliser votre fichier de règles comme ceci:

static function OnBeforeRequest(oSession:Fiddler.Session) 
    { 
     if (oSession.HostnameIs("MYAPP")) 
     { 
     oSession.host = "127.0.0.1:8081"; 
     } 
    } 

... puis vient de frapper http://myapp, qui agira comme un alias pour 127.0.0.1:8081.

+0

merci pour tous les détails – Dave

+1

dans le cas où il aide tout le monde, la valeur par défaut pour http: // [votre adresse proxy et le numéro de port] est http://127.0.0.1:8888, vous pouvez vérifier/changer le port dans Outils> Fiddler Options –

4

Si vous êtes en mesure de modifier la demande URI, et il est localhost alors il y a une solution beaucoup plus simple: changer le nom d'hôte à localhost.fiddler.

Cela ne dépend pas de la configuration des proxies (que ce soit le réglage HttpWebRequest.Proxy ou l'élément <defaultProxy> dans un fichier .config).

(De commentaire sur this question.)

Questions connexes