我目前使用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