Как мне увидеть необработанный HTTP-запрос, который отправляет класс HttpWebRequest?

Я знаю, что вы все ответите «используйте отладочный прокси-сервер, такой как Fiddler», но это не так просто.

Вот моя ситуация: у меня есть некоторый код, который работает на сервере в коде программной части страницы ASP.NET (aspx.cs), который (среди прочего) устанавливает соединение с другим , захватывает некоторые данные, затем форматирует их и возвращает в браузер.

Проблема в том, что другой сервер делает неправильные действия, и поэтому я хочу иметь возможность передать на страницу флаг отладки (через строку запроса, например? debug = true), чтобы он распечатал полностью необработанный HTTP-запрос, который он отправляет на другой сервер, чтобы я мог видеть, что, черт возьми, не так. Этот код работает в нескольких местах, поэтому я хочу иметь возможность просто передать этот флаг в dev, staging или production и просто увидеть запрос, без необходимости выяснять, могут ли производственные серверы разговаривать с каким-то прокси-сервером, который где-то существует. и т. д.

Можно подумать, что это легко сделать, не так ли? Так что я чувствую себя сумасшедшим или что-то в этом роде, но я посмотрел ссылку на HttpWebRequest и его родительский класс WebRequest и - ничего. Нет, ничего не поделаешь. Можно было подумать, что Microsoft подумала бы об этом. Самое близкое, что вы можете получить доступ к "Заголовкам" но когда я попробовал, он пропустил некоторые действительно важные заголовки, такие как «длина содержимого» - так что он, должно быть, «лжет» мне (я знаю, что он лжет, потому что я точно знаю, что удаленный сервер возвращает статус 200 - запрос выполнен успешно, он просто возвращает неверные / разные / неправильные данные)

Вот пример запрошенного кода:

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();
64
задан eeeeaaii 27 September 2010 в 22:37
поделиться