Uri targetUri = new Uri(targetURL);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string data = reader.ReadToEnd();
response.Close();
为什么上面的代码工作正常,但以下代码没有? 请注意,我在以下代码中提前关闭响应。
Uri targetUri = new Uri(targetURL);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
response.Close();
string data = reader.ReadToEnd();
答案 0 :(得分:6)
关闭响应也会关闭响应流...所以StreamReader
不再需要读取任何内容。
来自WebResponse.Close
的文档:
Close方法可以清除 WebResponse和。使用的资源 通过关闭基础流 调用Stream.Close方法。
答案 1 :(得分:0)
您的阅读器已使用响应中的流初始化,因此正在使用它。
如果您关闭响应流,则阅读器不再具有可读取的工作基础流。