Я знаю, что вы все будете отвечать "использовать прокси-сервер отладки, такой как Fiddler", но это не так просто.
Вот моя ситуация: у меня есть код, который выполняется на сервере, в ASP.NET-странице с кодом (aspx.cs), который (между прочим) устанавливает соединение с другим сервером, захватывает некоторые вещи и затем форматирует его и возвращает его в браузер.
Проблема в том, что другой сервер делает неправильную вещь, и поэтому я хочу иметь возможность передать флаг отладки на страницу (через строку запроса, например? debug = true), чтобы она распечатывала полностью необработанный HTTP-запрос, который он отправляет на другой сервер, чтобы я мог видеть, что это за ошибка. Этот код работает в нескольких местах, поэтому я хочу иметь возможность просто передать этот флаг на dev, промежуточном или производственном процессе и просто увидеть запрос, не имея необходимости выяснять, могут ли производственные серверы разговаривать с некоторым прокси-сервером, который существует где-то, и т.д.
Вы могли бы подумать, что было бы легко сделать это, не так ли? Поэтому я чувствую, что я сумасшедший или что-то, но я посмотрел ссылку на 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();