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

Ios 将用户代理标头添加到映像下载请求,ios,webclient,user-agent,mvvmcross,Ios,Webclient,User Agent,Mvvmcross,我遇到了一个问题,服务器配置的更改意味着我使用MvxImageViewLoader下载图像的所有尝试都被重定向,直到最终放弃。经过大量的烦恼之后,我们终于发现http请求中缺少用户代理头是罪魁祸首。因此,有两个问题: 1) 尽管加载失败,但MvxImageViewLoader和设置ErrorImagePath产生的错误不会导致显示错误图像。这似乎是错误的。我至少希望调试器中出现错误消息 2) 是否有一种简单的方法来添加用户代理头?在查看下载缓存插件的源代码后,我创建了自己版本的MvxHttpFi

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

1) 尽管加载失败,但MvxImageViewLoader和设置
ErrorImagePath
产生的错误不会导致显示错误图像。这似乎是错误的。我至少希望调试器中出现错误消息

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

  • 我不清楚第一个问题是什么

    如果存在未使用
    ErrorImagePath
    的bug,请将其登录(最好使用复制示例)

  • 不,目前我不知道有什么更简单的方法可以做到这一点

    DownloadCache插件提供图像的下载缓存。作为一个整体模块,它的API相当简单-例如,图像视图加载可以通过为
    imvxmagehelper
    提供替代实现来替代

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

    • 通过接口-例如,具有覆盖单个部件的能力-例如,
      MvxHttpFileDownloader
      可以完全按照问题中所述覆盖
    • 通过一些缓存常量的配置选项
    除此之外,目前还没有其他可用的API。原因很简单——就像所有MvvmCross一样,DownloadCache是为了满足正版应用的需求而构建的——而这些应用不需要任何其他东西。事实上,DownloadCache实际上是Windows内置的
    Image
    控制下载的替代品,两者提供的定制挂钩比当前的DownloadCache更少

    如果有人们需要的有用的添加,那么当然可以请求这些添加(或者构建并作为拉请求发送),这些添加可能会包含在未来的库版本中

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

  • 希望有帮助


    Stuart

    棘手的部分是,您可以覆盖
    MVxHTPFiledownloader
    ,但是
    MVxHTPFiledownloader
    是硬编码的,以使用
    MvxFileDownloadRequest
    (而不是通过IoC获取内容),因此我必须重新实现这两个功能,只需在
    MvxFileDownloadRequest
    中添加一行即可。