- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
WebClient client = new WebClient();
string url = "https://someurl.com/..."
string get = client.DownloadString(url);
如何计算 url
被下载了多少次?
最佳答案
解决此问题的一种方法是子类化 WebClient
并重写您要对其进行统计的方法。我在下面的实现中选择了保留通过 GetWebRequest
传递的任何 url 的统计信息。我对代码进行了大量评论,所以我认为很明显它归结为在字典中为每个 Uri
保留一个计数。
// subclass WebClient
public class WebClientWithStats:WebClient
{
// appdomain wide storage
static Dictionary<Uri, long> stats = new Dictionary<Uri, long>();
protected override WebResponse GetWebResponse(WebRequest request)
{
// prevent multiple threads changing shared state
lock(stats)
{
long count;
// do we have thr Uri already, if yes, gets its current count
if (stats.TryGetValue(request.RequestUri, out count))
{
// add one and update value in dictionary
count++;
stats[request.RequestUri] = count;
}
else
{
// create a new entry with value 1 in the dictionary
stats.Add(request.RequestUri, 1);
}
}
return base.GetWebResponse(request);
}
// make statistics available
public static Dictionary<Uri, long> Statistics
{
get
{
return new Dictionary<Uri, long>(stats);
}
}
}
一个典型的使用场景是这样的:
using(var wc = new WebClientWithStats())
{
wc.DownloadString("http://stackoverflow.com");
wc.DownloadString("http://stackoverflow.com");
wc.DownloadString("http://stackoverflow.com");
wc.DownloadString("http://meta.stackoverflow.com");
wc.DownloadString("http://stackexchange.com");
wc.DownloadString("http://meta.stackexchange.com");
wc.DownloadString("http://example.com");
}
var results = WebClientWithStats.Statistics;
foreach (var res in results)
{
Console.WriteLine("{0} is used {1} times", res.Key, res.Value);
}
输出:
https://stackoverflow.com/ is used 3 times
https://meta.stackoverflow.com/ is used 1 times
https://stackexchange.com/ is used 1 times
https://meta.stackexchange.com/ is used 1 times
http://example.com/ is used 1 times
我会选择 pluralization bug理所当然。
关于c# - WebClient DownloadString() 计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30307822/
我想从谷歌财经导入文本数据,我用这个http地址作为参数来DownloadString http://www.google.com/finance/getprices?i= 1200&p=1d&f=d
我有一个简单的功能可以从特定页面的以下代码中抓取突然出现 503 错误的网页: try { WebClient client = new WebClient(); client.Proxy =
我正在尝试从 Amazon 下载 html 文档,但由于某种原因,我得到了一个错误的编码字符串,例如“�� K��g��g�e”。 这是我尝试过的代码: using (var webClient =
我有一个名为 GetIP 的函数,我在启动时和用户按下按钮时调用该函数。由于某种原因,它在启动时不会崩溃,但在使用按钮调用该函数时会崩溃。没有异常(exception),什么都不会卡住。 函数代码:
这个问题在这里已经有了答案: C# WebClient disable cache (12 个答案) 关闭 7 年前。 我正在使用这段代码从 URL 获取返回字符串 webClient.Encodi
只是一段代码 WebClient wc = new WebClient(); String str = wc.DownloadString(new Uri("http://content.warfra
我正在开发一个使用 ASP.Net 3.5 运行的 Web 应用程序 在应用程序的某处,我正在调用外部系统。此调用包括从特定 url 下载字符串: string targetUrl = BuildMy
我遇到了一个关于 WebClient.DownloadString 的奇怪问题,我似乎无法解决,我的代码: Dim client As New WebClient() Dim html = clien
这个问题在这里已经有了答案: WebClient.DownloadString result is not match with Browser result 2 (3 个答案) 关闭 5 年前。
WebClient client = new WebClient(); string url = "https://someurl.com/..." string get = client.Dow
我正在使用 webclient 从在线共享点下载 XML 文件。 但是,当我使用 WebClient.DownloadString(string url) 方法时,一些字符没有被正确解码。 当我使用
我正在尝试查看 http://simpledesktops.com/browse/desktops/2012/may/17/where-the-wild-things-are/ 的来源使用代码: St
对 WebClient.DownloadString 的调用给出了第一次机会异常: IOException: The specified registry key does not exist. 一段
我想从海盗湾的搜索查询中获取源代码,我的代码中有这个但它没有返回任何内容: WebClient webpage = new WebClient(); string source= webpage.D
我在为我正在构建的屏幕抓取工具从网上下载一些内容时遇到问题。 在下面的代码中,从 Web 客户端下载字符串方法返回的字符串返回一些奇怪的字符用于少数(不是所有)网站的源下载。 我最近添加了 http
任何人都知道我可以如何修改下面的 DownloadString 以便我也可以传递基本的身份验证凭据? 我正在使用与 PsGet (http://psget.net/) 相同的技术来下载我自己的内部脚本
我正在使用 WebClient.DownloadString() 方法下载一些数据。我正在使用以下代码: static void Main(string[] args) { s
我昨天开始使用 Xamarin for Android,是的,它非常好。当然,我和每个人一样,肯定会有一些错误。 我尝试的只是使用以下代码行异步下载 www.google.com 的 HTML:
我想知道在使用 WebClient.DownloadString 时我应该保护自己免受哪些异常的影响。 这是我目前使用它的方式,但我相信你们可以建议更好、更健壮的异常处理。 例如,在我的脑海中: 没有
我正在尝试使用正则表达式从网站检索名称。但是,当我运行该程序时,使用“路径中的非法字符”出现错误。这是代码: private void button1_Click(object sender, Eve
我是一名优秀的程序员,十分优秀!