2013-08-20 24 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'。 –