我有这样一段代码:
var uri = "myURL.com"
var request = (HttpWebRequest)WebRequest.Create(uri);
string postData = "myData";
byte[] data = Encoding.UTF8.GetBytes(postData);
request.Method = "POST";
request.UseDefaultCredentials = true;
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
request.AddRange(1024);
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36";
Stream stream = request.GetRequestStream();
stream.Write(data, 0, data.Length);
WebResponse response = request.GetResponse();
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
Console.WriteLine(responseString);
response.Close();
stream.Close();
我得到了一个异常:"此流不支持查找操作"。此错误发生在stream.Length
和stream.Position
中。尽管我认为,由于这个错误,我的postData
没有发送到服务器。以下是异常的屏幕截图
只有当您调用与当前流不兼容的方法或属性(在您的情况下为NetworkStream)时,才会引发此异常。如果你需要向后移动,你需要在一个临时流(MemoryStream,FileStream,…)中复制内容
您的示例代码对此场景没有问题。在Visual studio中可以看到的异常是因为VS试图访问每个属性以显示值。当您的代码运行时,不会调用像"Position"这样的属性,一切都很好。
以编程方式知道是否可以在流中进行搜索。使用流的属性CCD_ 4。