Sam*_*eet 13 .net c# httpwebresponse
WebResponse response;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 20000;
response = request.GetResponse();
request = (HttpWebRequest)WebRequest.Create(url2);
response = request.GetResponse();
}
catch(Exception ex)
{
//do something
}
finally
{
}
Run Code Online (Sandbox Code Playgroud)
应该在哪里调用response.Close()?
在尝试每个GetResponse()之后?
在最后一次GetResponse()尝试 - 一次?
Joh*_*ers 22
以上都不是.你应该使用一个using块:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 20000;
using (WebResponse response = request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream))
{
var result = reader.ReadToEnd();
// Do something with result
}
}
}
Run Code Online (Sandbox Code Playgroud)
阿using块将确保Dispose方法被调用时,无论是否有异常.Dispose将执行与Close相同的操作.
using (var d = new DisposableClass()){code;}
Run Code Online (Sandbox Code Playgroud)
相当于:
DisposableClass d = null;
try
{
d = new DisposableClass();
code;
}
finally
{
if (d != null)
((IDisposable)d).Dispose();
}
Run Code Online (Sandbox Code Playgroud)