【发布时间】:2013-11-12 00:24:15
【问题描述】:
我正在尝试使用 WebClient 查询一些 URL。
我有一个集合,我循环通过它来获取 QueryString 值,并构建最终 URL,然后将其传递给客户端。
它第一次执行良好时,我得到了正确的响应,但是,当它第二次进入循环时,我得到了错误:
System.Net.WebException --> 远程服务器返回错误:(403) Forbidden。
如果我是第一次收到回复。那我也应该去拿剩下的收藏了。
有什么线索吗?我可能会错过什么?
下面是我正在使用的代码 sn-p。
using(System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\sample.text")) {
foreach(var f in fileCollections) {
strFinalURL = string.Empty;
strFinalURL = "someURL" + f; // f can be considered as querystring param value
try {
using(var client = new WebClient()) {
test = client.DownloadString(strFinalURL);
if (!test.Contains("somecondition")) {
file.WriteLine("");
}
}
} catch (System.Exception ex) {
Console.WriteLine(ex.Message);
}
}
}
【问题讨论】:
-
所有 URL 都来自同一个域吗?返回 403 的 URL,是否可以通过浏览器访问?
-
@codingstill 是的,所有 URL 都来自同一个域并且可以通过浏览器访问
-
如果你所说的一切都是正确的,那么我怀疑服务器限制正在发挥作用。如果您使用战略性放置的
Thread.Sleep稍微放慢速度会发生什么? -
下载Fiddler并使用fiddler发送HTTP请求,查看正在接收和发送的数据。
-
@spender,是的,节流在这里发挥作用..当我放慢进程时..它起作用了......谢谢
标签: c# webclient webclient-download