2013-08-20 35 views
0

我遇到了一個問題,即服務器配置的更改意味着我所有嘗試下載圖像的嘗試都被重定向到最終放棄。經過很多煩惱之後,我們終於發現,http請求中缺少用戶代理頭是罪魁禍首。因此,有兩個問題:將用戶代理標題添加到圖像下載請求

1)儘管未能加載,但由MvxImageViewLoader產生的錯誤以及設置ErrorImagePath都沒有導致顯示錯誤圖像。這似乎是錯誤的。我會至少在調試器中預期錯誤消息。

2)是否有添加用戶代理頭的簡單方法?在查看下載緩存插件的源代碼後,我創建了自己的MvxHttpFileDownloader版本,它與原始版本完全相同,只不過它創建了我自己的MvxFileDownloadRequest版本,它與原始版本完全相同,除了添加用戶代理標題在開始請求之前。然後,我的MvxHttpFileDownloader版本在AppDelegate中註冊,取代(我假設)原始版本。這似乎有點沉重。有一種更簡單的方法嗎?

回答

1
  1. 我不清楚第一個問題是什麼。

    如果有ErrorImagePath未使用的錯誤,那麼請登錄本(最好用複製示例)上http://github.com/slodge/mvvmcross/issues

  2. 沒有 - 我不知道有什麼簡單的方法,目前做到這一點。

    DownloadCache插件提供圖像的下載緩存。作爲一個整體模塊,它的API非常簡單 - 例如圖像視圖加載可以通過爲IMvxImageHelper<TImage>提供替代實現來替換。

    在內部,該模塊還爲開發者提供一定的靈活性:

      經由接口
    • - 例如能夠覆蓋各個部分 - 例如MvxHttpFileDownloader可以完全按照您的問題
    • 中的描述通過某些緩存常量的某些配置選項進行重寫。

    除此之外,目前沒有任何其他API可用。原因很簡單 - 就像所有的MvvmCross一樣,DownloadCache的構建是爲了滿足真正的應用程序的要求 - 而這些應用程序不需要其他任何東西。事實上,DownloadCache實際上是the MT.Dialog image loader和Windows內置的Image控件下載的替代品 - 兩者都比當前的DownloadCache提供更少的定製掛鉤。

    如果人們需要添加有用的附加信息,那麼這些附加信息當然可以被請求(或者作爲合併請求來構建和發送) - 這些信息可能包含在未來的圖書館版本中。

    或者,開發人員也可以構建替代實現 - 尤其是使用特定於平臺的網絡堆棧或使用新的HttpClient網絡庫,這可能會克服部分帶有MonoTouch Http堆棧的possible issues

希望幫助

斯圖爾特

+0

棘手的部分是,你可以覆蓋'MvxHttpFileDownloader',但'MvxHttpFileDownloader'是硬編碼使用'MvxFileDownloadRequest'(而不是通過獲得國際奧委會的東西),所以我不得不重新實現它們,只是爲了添加一行到'MvxFileDownloadRequest'。 –

相關問題