0

我在将数据从 MemoryStream 复制到请求流时遇到问题。

var Request = (HttpWebRequest.Create(Url) as HttpWebRequest);
Request.Method = "PUT";
Stream RequestStream = Request.GetRequestStream();

// write to MemoryStream
var MemStream = new MemoryStream();
byte[] Test = Encoding.ASCII.GetBytes("test000\r\n");
MemStream.Write(Test, 0, Test.Length);

// test writing correctly
byte[] B = MemStream.ToArray();
System.Windows.Forms.MessageBox.Show(Encoding.ASCII.GetString(B)); // shows data correctly

// copy data to request stream(not working!)
MemStream.CopyTo(RequestStream);

// add new data to request stream(working)
byte[] Test1 = Encoding.ASCII.GetBytes("test111");
RequestStream.Write(Test1, 0, Test1.Length);

仅发送到服务器“test111”。有什么想法吗?

4

3 回答 3

1

Copy to 从当前位置复制数据。所以它无法复制,因为位置结束了。其中 asToArray返回所有数据,与位置无关。

复制从当前流中的当前位置开始,复制操作完成后不会重置目标流的位置。

试试这个

MemStream.Position = 0;
MemStream.CopyTo(RequestStream);

有关更多信息,请参阅Stream.CopyTo

于 2013-09-17T09:39:53.753 回答
1

memstream的位置在最后。因为MemStream.Write(Test, 0, Test.Length);

采用:

// copy data to request stream(would work!)
MemStream.Position = 0;
MemStream.CopyTo(RequestStream);
于 2013-09-17T09:40:27.697 回答
1

设置 MemoryStream 对象 Position=0 并使用 CopyTo 方法

MemStream.Position = 0; MemStream.CopyTo(RequestStream);

于 2013-09-17T09:56:09.650 回答