Я знаю, что вы все ответите "использовать отладочный прокси-сервер, такой как 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();