显示使用HttpWebRequest在C#中发送的所有HTTP数据

时间:2010-10-05 09:46:30

标签: c# debugging http

我正在尝试寻找为什么来自C#脚本的POST请求不起作用,当相同的请求在Python中正常工作时。我希望能够将脚本发送的所有数据以及来自服务器的响应显示在屏幕上,以便我可以找出C#和Python脚本之间发送的差异。

在Python中,我可以使用标准的httplib2库来执行此操作:

httplib2.debuglevel = 1

这会产生以下输出(作为示例):

reply: 'HTTP/1.1 201 Created\r\n'
header: Date: Tue, 05 Oct 2010 09:25:42 GMT
header: Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny9 with Suhosin-Patch
header: X-Powered-By: PHP/5.2.6-1+lenny9
header: Location: http://example.org/api/2
header: Content-Length: 0
header: Content-Type: text/html
send: 'GET /api/2 HTTP/1.1\r\nHost: example.org\r\naccept-encoding: gzip, deflate\r\nuser-agent: Python-httplib2/$Rev$\r\n\r\n'

有没有办法使用HttpWebRequest类在C#中生成类似的输出?

我在另一个问题中看到了Fiddler的提及,但我正在运行Linux而且Fiddler似乎只适用于Windows。

2 个答案:

答案 0 :(得分:2)

你可以旋转resp.Headers.AllKeys,然后转储密钥及其值,尽管有时会进行一定程度的翻译(最明显的是当它进行自动重定向跟踪时)。

您可以使用System.Net跟踪。

您可以使用具有Linux版本的ethereal。我现在不把它用于这样的事情,因为Fiddler确实更适合这种情况,但我过去常常使用ethereal,有时看到实际上是什么,而不是代码所说的是最好的方式去(因为你不依赖于可能有错误的代码来告诉你代码是否有问题)。

答案 1 :(得分:0)

是的,您可以,我以前成功使用过它。如果您正在使用C#,我想有一个配置文件,您可以打开System.Net跟踪。我不确定Mono是否有这个 - 如果你使用Mono。

看看这里: http://msdn.microsoft.com/en-us/library/ty48b824.aspx