Xamarin Forms图片无法从远程URL加载

9

我有一个示例Xamarin Forms项目,它只显示一个图像,其图像源设置为远程URL。但问题是对于某些URL有效,而对于其他URL无效。我从Google图像搜索中选择了随机的图像链接,并编译了一个工作/不工作的列表。非常感谢您对这种奇怪行为的任何见解。

提前致谢!

有效的URL

无效的URL

XAML文件

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:XamarinImageTest"
             x:Class="XamarinImageTest.MainPage"
             BackgroundColor="#000000">

    <ContentPage.Content>
        <Image Source="https://i.ytimg.com/vi/JTxPzXQ1Sso/maxresdefault.jpg" 
               VerticalOptions="Fill"
               HorizontalOptions="Fill"></Image>
    </ContentPage.Content>
</ContentPage>

你如何在Xamarin.forms中实现图像显示?发布带有代码或更多信息的帖子将有助于让其他人看到整个情况。 - Jsw
既然你问了,我也附上了代码。我认为设置图像标签的源属性是很明显的。 :) - Sreejith Krishnadas
看起来是缓存问题。尝试使用这个库:https://github.com/luberda-molinet/FFImageLoading - EvZ
没有运气.. 即使是 FFImageLoading 也给出了相同的结果。我制作了一个演示此问题的样本 Github 项目 (https://github.com/uksreejith/XamarinImageTest)。我想知道它是否与 URL 重定向有关。 - Sreejith Krishnadas
测试给定的url,iOS(Ver 11.1)上能够显示第一个和第三个不工作的url,除了第二个.png图片。在Android(Ver 6.0)上所有这些都不能显示。但是在代码断点中可以预览这些图片,只是无法在手机上显示。此外,我还测试了其他一些图片url,如果是"https"协议,有些图片将无法显示,但如果将其重命名为"http"协议,则可以显示。但这在你的情况下并不适用。行为很奇怪,似乎是一个bug。 - Jsw
我提供的所有有效URL都有“https”..所以我不确定这是否是一个问题..它可能是一个错误..但是Xamarin和FFloadingimage都无法加载图像..它们两个同时失败了吗?这很可疑..我还没有在iPhone上测试过。但是如果你说它在iOS上运行正常而在Android上不行,那么这种情况就更加复杂了.. - Sreejith Krishnadas
2个回答

3

1
非常感谢!切换到本地的http客户端处理程序解决了问题。虽然我不知道托管的那个有什么问题,也许是需要修复的一个bug。 - Sreejith Krishnadas
你能确认这个适用于Xamarin.forms而不仅仅是Xamarin.Android吗?它提到:“Xamarin.Android HttpClient配置在项目选项> Android选项中,然后单击高级选项按钮。”- 我在我的Xamarin Forms应用程序中看不到“项目选项”或“高级”或任何类似的东西! - niico
@niico 你应该检查MyProject.Android的属性。那里有Android选项,最后有一个高级按钮。但对我没有用。 - mrmowji
2
未来的调试者请注意:确保你已经安装了最新版本的Xamarin.Forms包(我使用的是4.2.0.709249,我已更新到4.2.0.848062)。在构建/部署应用程序之前,请确保更改图像源URL,因为图像会被缓存24小时。 - mrmowji

2

我遇到了这个问题。远程图片能够在UWP和ISO中显示,但无法在Android中显示。解决方法是更新NuGet Xamarin包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接