У меня есть большой список (расширяющийся с течением времени) URL-адресов, которые мне нужны, чтобы проверить их тип. Вот код, который у меня сейчас есть:
private string[] MIME = new string[] {
"audio/ogg - ogg",
"video/ogg - ogg",
"application/f4v - mp4",
"application/octet-stream - mp3",
"audio/aac - mp3",
"audio/mp3 - mp3",
"audio/mp4 - mp4",
"audio/mp4-latm - m4a",
"audio/mpeg - mp3",
"audio/mpeg3 - mp3",
"audio/x-mpeg - mp3",
"audio/x-ms-wma - wma",
"video/f4v - mp4",
"video/mp4 - mp4",
};
private string CheckType(string url) {
try {
HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create(new Uri(url));
webRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:2.0) Gecko/20100101 Firefox/4.0";
webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
webRequest.Timeout = 5000;
HttpWebResponse webResponse = (HttpWebResponse) webRequest.GetResponse();
long fileSize = webResponse.ContentLength;
foreach (string mime_entry in MIME) {
string sheader = webResponse.Headers.ToString();
string[] mime = mime_entry.Split(new string[] { " - " }, StringSplitOptions.RemoveEmptyEntries);
if (sheader.Contains(mime[0])) {
return mime[1] + " " + fileSize.ToString();
}
}
return "";
} catch (Exception ex) {
return "";
}
}
- Могу ли я сделать мой запрос быстрее?
- Могу ли я как-то использовать многопоточность для более быстрой итерации списка (что если один из потоков останавливается из-за ответа http?)
- Есть ли лучший способ сделать это?