"This stream does not support seek operations" 正在制作 HTTPWebRequest
"This stream does not support seek operations" while HTTPWebRequest making
我有这样一段代码:
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();
我得到一个异常,如:"This stream does not support seek operations"。此错误发生在 stream.Length
和 stream.Position
中。我虽然认为,由于这个错误,我的 postData
没有发送到服务器。
Here is the screenshot of the exception
仅当您调用与当前流(在您的情况下为 NetworkStream)不兼容的方法或 属性 时才会抛出此异常。如果需要向后移动,则需要将内容复制到临时流(MemoryStream、FileStream 等)中。
您的示例代码在这种情况下没有问题。您在 Visual studio 中看到的异常是因为 VS 尝试访问每个 属性 以显示一个值。当您的代码 运行 时,不会调用 'Position' 等属性,一切都很好。
以编程方式了解您是否可以在流中查找。使用流的 属性 CanSeek
。
我有这样一段代码:
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();
我得到一个异常,如:"This stream does not support seek operations"。此错误发生在 stream.Length
和 stream.Position
中。我虽然认为,由于这个错误,我的 postData
没有发送到服务器。
Here is the screenshot of the exception
仅当您调用与当前流(在您的情况下为 NetworkStream)不兼容的方法或 属性 时才会抛出此异常。如果需要向后移动,则需要将内容复制到临时流(MemoryStream、FileStream 等)中。
您的示例代码在这种情况下没有问题。您在 Visual studio 中看到的异常是因为 VS 尝试访问每个 属性 以显示一个值。当您的代码 运行 时,不会调用 'Position' 等属性,一切都很好。
以编程方式了解您是否可以在流中查找。使用流的 属性 CanSeek
。