62,041
社区成员
发帖
与我相关
我的任务
分享
protected void DownLoad()
{
while (true)
{
string url = null;
lock (locker)
{
current++;
if (current >= jobNum)
{
threadEndNum++;
if (threadEndNum >= threadNum)
{
UpdateState("下载完毕,失败" + err + "个。", true);
}
break;
}
url = urls[current];
}
UpdateState("正在下载" + url, false);
int tryNum = 0;
while (true)
{
HttpWebRequest request;
try
{
string fn = Path.GetFileName(url);
if (cbReplaceSame.Checked || !File.Exists(sSavePath + fn))
{
request = (HttpWebRequest)HttpWebRequest.Create(url);
if (!string.IsNullOrEmpty(sReferer)) request.Referer = sReferer;
else request.Referer = url;
if (!string.IsNullOrEmpty(sUserAgent)) request.UserAgent = sUserAgent;
request.Headers.Add("Upgrade-Insecure-Requests", "1");
request.Accept="text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8";
request.Headers.Add("Accept-Encoding", "gzip, deflate");
request.Headers.Add("Accept-Language", "zh-CN,zh;q=0.8");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream sr = response.GetResponseStream();
FileStream fs = new FileStream(sSavePath + fn, FileMode.OpenOrCreate);
int buffer = 1024;
byte[] data = new byte[buffer];
int bytesRead = 0;
while ((bytesRead = sr.Read(data, 0, buffer)) != 0) fs.Write(data, 0, bytesRead);
sr.Close();
fs.Close();
}
break;
}
catch (Exception ex)
{
tryNum++;
if (tryNum >= tryNumMax)
{
lock (locker) { err++; sErr += "\n" + url + "(" + ex.Message + ")"; }
break;
}
Thread.CurrentThread.Join(1000);//停止1s再重试
}
}
}
}