提问人:Krishna Kumar 提问时间:8/25/2008 最后编辑:CommunityKrishna Kumar 更新时间:4/9/2023 访问量:78187
下载网页的最快 C# 代码
Fastest C# Code to Download a Web Page
答:
29赞
Chris
8/25/2008
#1
来自 MSDN:
using System;
using System.Net;
using System.IO;
public class Test
{
public static void Main (string[] args)
{
if (args == null || args.Length == 0)
{
throw new ApplicationException ("Specify the URI of the resource to retrieve.");
}
WebClient client = new WebClient ();
// Add a user agent header in case the
// requested URI contains a query.
client.Headers.Add ("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Stream data = client.OpenRead (args[0]);
StreamReader reader = new StreamReader (data);
string s = reader.ReadToEnd ();
Console.WriteLine (s);
data.Close ();
reader.Close ();
}
}
评论
7赞
Eric J.
6/5/2012
希望 MSDN 在其示例中实际处置 IDisposable 资源。一个小异常,Stream/StreamReader 将不会被清理。 是你的朋友。using
71赞
John Sheehan
8/25/2008
#2
public static void DownloadFile(string remoteFilename, string localFilename)
{
WebClient client = new WebClient();
client.DownloadFile(remoteFilename, localFilename);
}
评论
9赞
SSpoke
9/30/2015
这是最慢的!,实例化一个新的 WebClient 在实际进行下载之前有 3-5 个延迟,我听说这是由于检查代理支持。我建议使用 Socket 方法进行下载,因为这是最快的解决方案
14赞
Anders Lindén
12/8/2017
我最快的解释是“使用尽可能少的代码字母”。
0赞
arturn
7/30/2020
@SSpoke 您不必在每次下载站点时都使用新实例,您可以使用 Webclient 的静态实例来避免延迟。
23赞
Adam Haile
8/25/2008
#3
使用 System.Net 中的 WebClient 类;在 .NET 2.0 及更高版本上。
WebClient Client = new WebClient ();
Client.DownloadFile("http://mysite.com/myfile.txt", " C:\myfile.txt");
8赞
EKanadily
9/1/2014
#4
这是我的答案,一个接受URL并返回字符串的方法
public static string downloadWebPage(string theURL)
{
//### download a web page to a string
WebClient client = new WebClient();
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Stream data = client.OpenRead(theURL);
StreamReader reader = new StreamReader(data);
string s = reader.ReadToEnd();
return s;
}
评论
1赞
AH.
4/5/2018
最佳答案。谢谢。
10赞
liang
12/19/2014
#5
public static void DownloadString (string address)
{
WebClient client = new WebClient ();
string reply = client.DownloadString (address);
Console.WriteLine (reply);
}
4赞
Amir Astaneh
2/3/2019
#6
我认为这是最快的(下载速度、时间、低延迟)下载解决方案。
// WebClient vs HttpClient vs HttpWebRequest vs RestSharp
// در نهایت به نظرم روش زیر سریعترین روشه
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(url);
Request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
Request.Proxy = null;
Request.Method = "GET";
using (WebResponse Response = Request.GetResponse())
{
using (StreamReader Reader = new StreamReader(Response.GetResponseStream()))
{
return Reader.ReadToEnd();
}
}
0赞
Auto
4/7/2023
#7
在这里,您有一种快速而简短的方法可以从Internet下载文件。它使用新的 HttpClient 对象,该对象是 .NET Framework 4.0+ 的新增功能,也可以与 .NET 一起使用。它还使用 aync await。
async Task<string> CurlAsync(string url) => await new HttpClient().GetStringAsync(url).ConfigureAwait(false);
// usage:
var content = await CurlAsync(myURL);
评论
3赞
Mark Rotteveel
4/8/2023
请不要只发布代码作为答案,还要解释你的代码是做什么的,以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更好,并且更有可能吸引赞成票。
评论