Доступ к буферизованному телу запроса в HttpWebRequest? - PullRequest
2 голосов
/ 08 апреля 2010

По умолчанию HttpWebRequest имеет AllowWriteStreamBuffering, установленное в значение true, что означает, что все данные, записанные в поток запросов, буферизуются внутри объекта.

Я бы хотел получить доступ к этому буферу данных после его записи, но, похоже, не могу найти никакого способа сделать это. Я рад, что он потерпит неудачу, если AllowWriteStreamBuffering ложно.

Есть ли способ сделать это, или он нигде не выставлен?


Относительно того, почему я хочу сделать это: я пишу класс подписания запроса OAuth, и, к сожалению, протокол требует, чтобы любое тело в кодировке формы считалось частью подписи. Поэтому мне нужно иметь доступ к телу, если оно закодировано в форме.

1 Ответ

0 голосов
/ 10 апреля 2010

AllowWriteStreamBuffering использует внутренний механизм. Буфер не выставляется вызывающей стороне. Он допускает сценарии, в которых начальный запрос перенаправляется или отклоняется для проверки подлинности, и в этом случае WebRequest может автоматически отправлять данные в новую конечную точку без необходимости отклонять запрос и запрашивать повторную передачу вызывающей стороне.

Вы должны найти другой способ получить поток. Может быть, вы можете сначала буферизовать его в свой собственный буфер (т.е. MemoryStream). Выполните необходимые операции, а затем сбросьте этот поток в requestStream WebRequest.

...