我目前使用DuckDuckGo图标工具来获取某些网页的图标,但为了获取图标,它需要您在请求的最后添加“.ico” ,例如:https://icons.duckduckgo.com/ip2/www.google.com.ico从DuckDuckGo下载.ico文件
所以,我使用WebClient
来下载favicon,虽然;它似乎并没有完全下载,因为每次打开文件时它都会出现损坏,并引发错误,指出“文件头不能被读取”。
我已经试过到目前为止以下(我WebClient
被称为client
,设置图标称为favicon
和路径的图标文件被称为favicon_path
):
Uri favicon_url = new Uri(
"https://icons.duckduckgo.com/ip2/" + gBrowser.Url.Host.ToString() + ".ico");
client.DownloadFile(@favicon_url, favicon_path);
favicon = new Icon(favicon_path);
和
Uri favicon_url = new Uri("https://icons.duckduckgo.com/ip2/"
+ gBrowser.Url.Host.ToString().Replace(".", "%2E") + ".ico");
client.DownloadFile(@favicon_url, favicon_path);
favicon = new Icon(favicon_path);
我猜测,在favicon_url多周期('.'
)负责,所以我的问题是:如何下载使用图标一个WebClient
(或类似的东西),如果它的名称有多个句点?或者如果不是这些时期,为什么我不能读取从DuckDuckGo下载的文件?
_“(。)我猜测,在favicon_url的多个周期负责” _ - 这听起来对我来说是一个非常糟糕的猜测。网址是有效的或不是。如果不是,则会在HTTP请求中发生错误,而不是无效的数据。我认为可能更大的问题是,网站不会将实际的Windows图标文件用于其图标。它们实际上是位图,需要像这样读取。你似乎试图将下载的文件传递给一个'Icon'构造函数,但是我怀疑这个文件实际上是一个有效的.ico文件(尽管网站使你可以使用扩展名)。 –
多期不应该是一个问题。你可以在文本编辑器(如记事本)中打开下载的文件,并确认它是否是保存的二进制文件?可能它是一个保存的HTML错误页面。 – James
'favicon_url.ToString()'返回什么?如果您使用“https:// icons.duckduckgo.com/ip2/www.google.com.ico”进行测试,代码是否正常工作? – mjwills