8
我如何查看HttpWebRequest类发送的原始HTTP请求?
我知道你们都会回答“使用像Fiddler这样的调试代理服务器”,但这不是那么简单。 这是我的情况:我在ASP.NET页面代码隐藏(aspx.cs)中的服务器上运行了一些代码,该代码(除其他外)建立了与 另一台服务器,获取了一些东西,然后对其进行格式化并将其返回到浏览器。 问题是另一台服务器做错了,所以我希望能够将调试标志传递到页面中(通过查询字符串,例如?debug = true),以便它将打印出 完全原始的HTTP请求将其发送到另一台服务器,以便我可以查看到底是什么问题。该代码在多个地方运行,因此我希望能够仅在开发,登台或生产中传递此标志,并且仅查看请求,而不必弄清楚生产服务器是否可以与某个地方存在的某些代理服务器进行通信等 您会认为这样做很容易,对吧?所以我觉得自己很疯狂,但是我看了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();