Sé que todos van a responder "usar un servidor proxy de depuración como Fiddler", pero no es tan simple.¿Cómo veo la solicitud HTTP sin formato que envía la clase HttpWebRequest?
Aquí está mi situación: Tengo un código que se ejecuta en un servidor, en una página ASP.NET de código subyacente (aspx.cs), que (entre otras cosas) establece una conexión con otro servidor , ase un poco cosas, y luego formatea y lo devuelve al navegador.
El problema es que el otro servidor está haciendo lo incorrecto, y quiero poder pasar una bandera de depuración a la página (a través de la cadena de consulta, por ejemplo? Debug = true) para que se imprima el completamente crudo solicitud HTTP que está enviando al otro servidor para que pueda ver qué diablos está mal. Este código se está ejecutando en varios lugares, así que quiero poder pasar esta bandera en desarrollo, puesta en escena o producción y simplemente ver la solicitud, sin tener que averiguar si los servidores de producción pueden hablar con algún servidor proxy que exista en algún lugar , etc.
Pensarías que sería fácil hacerlo, ¿no? Así que siento que estoy loco o algo así, pero miré la referencia de HttpWebRequest y su clase de padres WebRequest y - nada. No se puede hacer. Pensarías que Microsoft habría pensado en esto. Lo más parecido es que puedes acceder a la colección "Encabezados", pero cuando lo probé omitió algunos encabezados realmente importantes como "longitud del contenido", así que debe estar "mintiéndome" (sé que está mintiendo, porque sé que es un hecho que el servidor remoto devuelve un estado 200 - la solicitud tiene éxito, es simplemente volviendo malos datos/diferentes/equivocadas)
Aquí está el ejemplo de código preguntadas para:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.whatever.com");
req.Method = ... whatever ...;
... other setup for the request ...
/* At this point we are about to send the request.
What does the raw HTTP request look like? */
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
¿Es posible reemplazar HttpWebRequest con algún otro componente? En caso afirmativo, puede tomar un componente HTTP de terceros que le permita capturar lo que se envía (o los encabezados) para hacer el trabajo. –
¿Has probado Firebug para Firefox? Es bastante poderoso, no sé cómo se compara con Fiddler, pero tal vez tiene lo que necesitas. – Gallen
Firebug no será de ayuda, ya que la parte interesante ocurre entre dos servidores: Firebug se encuentra dentro de Firefox, y solo puede inspeccionar lo que ocurre entre un servidor y el cliente. – tdammers