关于流和http请求/响应的问题

时间:2010-10-18 15:20:01

标签: .net http stream

使用流时,内存消耗应该与缓冲区的大小相同。但是,当我查看以下使用http请求和响应的代码时,我不确定流是如何工作的。 (准确地说是HttpWebRequest)

Stream requestStream = webRequest.GetRequestStream();

// Here write stuff to the stream, data is a string.
webRequest.ContentLength = data.Length;                
byte[] buffer = Encoding.UTF8.GetBytes(data);

// Obtain request stream from request object so I can send data.
requestStream = webRequest.GetRequestStream();
requestStream.Write(buffer, 0, buffer.Length);                

WebResponse response = webRequest.GetResponse();

我可以继续写一个requestStream,比如说在一个循环中,而不是只写一个字符串,但是在调用webRequest.GetResponse()之前,它们都不会到达目标服务器。 那么,在执行最后一行之前,流管理的数据是如何(或在哪里)的呢?

1 个答案:

答案 0 :(得分:2)

我认为这取决于HttpWebRequest.AllowWriteBufferStreaming的价值。如果此属性为true(默认情况下为此属性),请求数据将全部缓冲,直到您要求响应为止。

如果为false,则可以在将数据写入流时将数据写入连接。

请注意,在任何一种情况下,最好按正常方式处理流:

using (Stream requestStream = webRequest.GetRequestStream())
{
    requestStream.Write(buffer, 0, buffer.Length);
}

您还应该使用using语句进行回复。

相关问题