nik*_*lon 14 c# webclient get httpwebrequest
我需要获取特定URL的内容.这是一个简单而直接的任务,尽管我希望尽可能高效.
WebClient或HttpWebRequest会占用更少的内存吗?哪个班级能更快地完成同样的任务?哪个类初始化时间较短?
Jim*_*hel 32
WebClient只是一个包装HttpWebRequest.使用WebClient可能稍微(大约几毫秒)比HttpWebRequest直接使用慢.但这种"低效率"带来了巨大的好处:它需要更少的代码,更容易使用,并且在使用它时你不太可能犯错误.例如,考虑使用以下方法检索网页的文本WebClient:
var client = new WebClient();
var text = client.DownloadString("http://example.com/page.html");
Run Code Online (Sandbox Code Playgroud)
对比HttpWebRequest:
string text;
var request = (HttpWebRequest)WebRequest.Create("http://example.com/page.html");
using (var response = request.GetResponse())
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
text = reader.ReadToEnd();
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想下载并保存到文件,事情会变得非常有趣.有了WebClient,这是一个简单的呼唤问题DownloadFile.有了HttpWebRequest,你必须创建一个阅读循环等.你可以犯错误的HttpWebRequest方式真的令人震惊.我知道因为我做了很多.
现在考虑下载两个不同的页面.随WebClient你可以写:
var client = new WebClient();
var page1 = client.DownloadString(page1Url);
var page2 = client.DownloadString(page2Url);
Run Code Online (Sandbox Code Playgroud)
完成.有了HttpWebRequest,您必须复制上面的代码,或将该代码包装在方法中.但是,如果你要将它包装在一个方法中,那么为什么不只是使用WebClient,哪些已经为你做了?
当您考虑对快速网站的请求可能需要大约100到500毫秒时,添加的几毫秒开销WebClient将达到总时间的最多一位数百分比.
使用WebClient简单的事情.仅HttpWebRequest在您需要提供额外的低级别控件时使用.两者之间的速度考虑是无关紧要的.