访问 HttpWebRequest 中缓冲的请求正文?

发布于 2024-08-28 07:18:02 字数 353 浏览 7 评论 0原文

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

我想在写入数据后访问该数据缓冲区,但似乎找不到任何方法来执行此操作。如果 AllowWriteStreamBuffering 为 false,我很高兴它会失败。

有什么办法可以做到这一点,或者它没有暴露在任何地方吗?


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

By default HttpWebRequest has AllowWriteStreamBuffering set to true, which means that all data written to the request stream is buffered inside the object.

I'd like to access this buffer of data after it has been written, but can't seem to find any way to do so. I'm happy for it to fail if AllowWriteStreamBuffering is false.

Is there any way to do this, or is it not exposed anywhere?


As to why I want to do this: I'm writing an OAuth request signing class, and unfortunately the protocol requires any form-encoded body to be considered part of the signature. So I need to be able to access the body if it's a form encoded one.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

季末如歌 2024-09-04 07:18:04

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

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

AllowWriteStreamBuffering uses an internal mechanism. The buffer is not exposed to the caller. It allows scenarios where the initial request is redirected, or denied for authentication, in which case the WebRequest can autopost the data to the new endpoint, without having to fail the request and asking the caller to resubmit.

You should find a different way to get the stream. Maybe you can first buffer it into your own buffer (i.e MemoryStream). Do your necessary operations, then flush that stream onto the WebRequest's requestStream.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文