Ric*_*ard 16 c# httpwebrequest streamreader
我为HttpWebRequest被调用实现了一个简单的帮助方法GetResponse(url).目前,我手动关闭WebResponse和StreamReader读取结果之后.然后我就这样返回结果:
// construct the request
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
// get the result
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string result = reader.ReadToEnd();
// clean up and return the result
reader.Close();
response.Close();
return result;
Run Code Online (Sandbox Code Playgroud)
在陈述中包含回报而不是关闭它们是否安全using ; 这会和.Close()es 有同样的效果吗?
// construct the request
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
// get the result
using (WebResponse response = request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
return reader.ReadToEnd();
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 24
这不仅安全 - 它比原始安全更安全,因为即使抛出异常,它也会处理掉对象; 一个using说法是相当于try/ finally声明.
通常,无论何时显式写入Close()或Dispose()调用,都要考虑是否可以使用using语句.
(请注意,顺便说一下,您没有使用Web响应中的编码 - 您总是假设使用UTF-8.WebClient相反,使用它可以使这更简单,如果这是一个选项.)