将用户代理标头添加到图像下载请求

时间:2013-08-20 20:07:32

标签: ios webclient user-agent mvvmcross

我遇到了一个问题,即服务器配置的更改意味着我用MvxImageViewLoader下载图像的所有尝试都被重定向,直到最终放弃。经过大量的微动,我们终于发现http请求中缺少用户代理标头是罪魁祸首。所以,有两个问题:

1)尽管无法加载,但MvxImageViewLoader生成的错误和设置ErrorImagePath的错误并未导致显示错误图像。这似乎是错的。我至少期望调试器中出现错误消息。

2)是否有一种简单的方法来添加用户代理标头?在查看下载缓存插件的源代码后,我创建了自己的MvxHttpFileDownloader版本,它与原始版本完全相同,只是它创建了我自己的MvxFileDownloadRequest版本,这个版本再次与原始的,除了我在启动请求之前添加用户代理标头。然后我的MvxHttpFileDownloader版本在AppDelegate中注册,替换(我假设)原始版本。这看起来有点沉重。有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

  1. 我不清楚第一个问题是什么。

    如果存在未使用ErrorImagePath的错误,请在http://github.com/slodge/mvvmcross/issues

  2. 上记录此信息(最好带有复制样本)
  3. 不 - 我目前还不知道有什么更简单的方法可以做到这一点。

    DownloadCache插件提供图像的下载缓存。作为一个整体模块,它的API非常简单 - 例如只需为IMvxImageHelper<TImage>提供替代实现,即可替换图像视图加载。

    在内部,该模块还为开发人员提供了一些灵活性:

    • 通过接口 - 例如具有覆盖单个部分的能力 - 例如MvxHttpFileDownloader可以完全按照您的问题中所述进行覆盖,
    • 通过某些缓存常量的一些配置选项。

    除此之外,目前还没有任何其他API可用。原因很简单 - 就像所有MvvmCross一样,DownloadCache是​​为满足正版应用程序的要求而构建的 - 这些应用程序不需要任何其他内容。实际上,DownloadCache实际上是the MT.Dialog image loader和Windows内置Image控件下载的替代品 - 两者都提供了比当前DownloadCache更少的自定义挂钩。

    如果人们需要有用的补充,那么这些当然可以被请求(或构建并作为Pull请求发送) - 这些可能包含在未来的库版本中。

    或者,开发人员也可以构建替代实现 - 特别是使用特定于平台的网络堆栈或使用新的HttpClient网络库,这可能会克服一些带有MonoTouch Http堆栈的possible issues

  4. 希望有所帮助

    斯图尔特