在HttpWebRequest中访问缓冲的请求体?

时间:2010-04-08 13:41:06

标签: httpwebrequest webrequest

默认情况下,HttpWebRequestAllowWriteStreamBuffering设置为true,这意味着写入请求流的所有数据都会缓存在对象内。

我想在写完数据后访问这个数据缓冲区,但似乎无法找到任何方法。如果AllowWriteStreamBuffering为假,我很高兴失败。

有没有办法做到这一点,还是没有暴露在任何地方?


至于为什么我要这样做:我正在编写OAuth请求签名类,不幸的是协议要求任何表单编码的主体都被视为签名的一部分。所以我需要能够访问身体,如果它是一个表格编码。

1 个答案:

答案 0 :(得分:0)

AllowWriteStreamBuffering使用内部机制。缓冲区不会向调用者公开。它允许重定向初始请求或拒绝进行身份验证的情况,在这种情况下,WebRequest可以将数据自动提交到新端点,而不必使请求失败并要求调用者重新提交。

您应该找到另一种获取流的方式。也许你可以先将它缓冲到你自己的缓冲区(即MemoryStream)中。执行必要的操作,然后将该流刷新到WebRequest的requestStream上。