我遇到了一个问题,即服务器配置的更改意味着我用MvxImageViewLoader
下载图像的所有尝试都被重定向,直到最终放弃。经过大量的微动,我们终于发现http请求中缺少用户代理标头是罪魁祸首。所以,有两个问题:
1)尽管无法加载,但MvxImageViewLoader生成的错误和设置ErrorImagePath
的错误并未导致显示错误图像。这似乎是错的。我至少期望调试器中出现错误消息。
2)是否有一种简单的方法来添加用户代理标头?在查看下载缓存插件的源代码后,我创建了自己的MvxHttpFileDownloader
版本,它与原始版本完全相同,只是它创建了我自己的MvxFileDownloadRequest
版本,这个版本再次与原始的,除了我在启动请求之前添加用户代理标头。然后我的MvxHttpFileDownloader
版本在AppDelegate
中注册,替换(我假设)原始版本。这看起来有点沉重。有更简单的方法吗?
答案 0 :(得分:1)
我不清楚第一个问题是什么。
如果存在未使用ErrorImagePath
的错误,请在http://github.com/slodge/mvvmcross/issues
不 - 我目前还不知道有什么更简单的方法可以做到这一点。
DownloadCache插件提供图像的下载缓存。作为一个整体模块,它的API非常简单 - 例如只需为IMvxImageHelper<TImage>
提供替代实现,即可替换图像视图加载。
在内部,该模块还为开发人员提供了一些灵活性:
MvxHttpFileDownloader
可以完全按照您的问题中所述进行覆盖,除此之外,目前还没有任何其他API可用。原因很简单 - 就像所有MvvmCross一样,DownloadCache是为满足正版应用程序的要求而构建的 - 这些应用程序不需要任何其他内容。实际上,DownloadCache实际上是the MT.Dialog image loader和Windows内置Image
控件下载的替代品 - 两者都提供了比当前DownloadCache更少的自定义挂钩。
如果人们需要有用的补充,那么这些当然可以被请求(或构建并作为Pull请求发送) - 这些可能包含在未来的库版本中。
或者,开发人员也可以构建替代实现 - 特别是使用特定于平台的网络堆栈或使用新的HttpClient网络库,这可能会克服一些带有MonoTouch Http堆栈的possible issues。
希望有所帮助
斯图尔特