我正在从历史数据库中读取数据,对于读取的每个 URL,我都会下载它并将数据存储到字符串中。我希望能够确定该链接是否是下载链接,即 .exe 或 .zip,例如我假设我需要阅读标头来确定这一点,但我不知道如何使用 WebClient 来做到这一点。有什么建议么?
while (sqlite_datareader.Read())
{
noIndex = false;
string url = (string)sqlite_datareader["url"];
try
{
if (url.Contains("http") && (!url.Contains(".pdf")) && (!url.Contains(".jpg")) && (!url.Contains("https")) && !isInBlackList(url))
{
WebClient client = new WebClient();
client.Headers.Add("user-agent", "Only a test!");
String htmlCode = client.DownloadString(url);
}
}
}
我不会加载链接后面的完整内容,而是发出 HEAD 请求。
HEAD 方法与 GET 相同,只是服务器不得在响应中返回消息正文。响应 HEAD 请求的 HTTP 标头中包含的元信息应该与响应 GET 请求而发送的信息相同。此方法可用于获取有关请求所隐含的实体的元信息,而无需传输实体主体本身。此方法通常用于测试超文本链接的有效性、可访问性和最近的修改。
报价http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
有关 C# 示例,请参阅这些问题
- 如何使用 C# 和 WebClient 类检查服务器上是否存在文件 https://stackoverflow.com/questions/830435/how-to-check-if-a-file-exists-on-a-server-using-c-and-the-webclient-class
-
如何检查 System.Net.WebClient.DownloadData 是否正在下载二进制文件? https://stackoverflow.com/questions/153451/c-how-to-check-if-system-net-webclient-downloaddata-is-downloading-a-binary-fi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)