【发布时间】:2020-03-30 21:15:45
【问题描述】:
我的 XAML 文件中有以下内容:
<ContentPage.Content>
<AbsoluteLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<StackLayout
AbsoluteLayout.LayoutFlags="All"
AbsoluteLayout.LayoutBounds="0,0,1,1">
<service:PinchPanContainer HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<ffimageloading:CachedImage RetryCount="5" RetryDelay="1" CacheDuration="1" x:Name="MyImage" HorizontalOptions="Fill" VerticalOptions="CenterAndExpand" DownsampleToViewSize="False"></ffimageloading:CachedImage>
</service:PinchPanContainer>
</StackLayout>
<StackLayout BindingContext="{x:Reference MyImage}" IsVisible="{Binding IsLoading}" Padding="12"
AbsoluteLayout.LayoutFlags="PositionProportional"
AbsoluteLayout.LayoutBounds="0.5,0.5,-1,-1">
<ActivityIndicator BindingContext="{x:Reference MyImage}" IsRunning="{Binding IsLoading}" />
<Label Text="Loading Hi-Res Image..." BindingContext="{x:Reference MyImage}" IsVisible="{Binding IsLoading}" HorizontalOptions="Center" TextColor="Black"/>
</StackLayout>
</AbsoluteLayout>
</ContentPage.Content>
并使用它来定义图像源:
MyImage.Source = uri;
Uri 有这个值,图片在浏览器中正常加载:http://192.168.0.12/images/27kv4c1/2dbc5331/a08a31/IMG_4190-Modifica.png
但是在模拟中,一旦我分配了源,我就会得到 5 倍的错误:
03-30 21:06:12.525 I/mono-stdout(28576): ---> (Inner Exception #5) System.IO.IOException: The server returned an invalid or unrecognized response.
03-30 21:06:12.525 I/mono-stdout(28576): at System.Net.Http.HttpConnection+ContentLengthReadStream.ReadAsync (System.Memory`1[T] buffer, System.Threading.CancellationToken cancellationToken) [0x00171] in /Users/builder/jenkins/workspace/archive-mono/2019-10/android/release/external/corefx/src/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/ContentLengthReadStream.cs:70
03-30 21:06:12.525 I/mono-stdout(28576): at FFImageLoading.Cache.DownloadCache.DownloadAsync (System.String url, System.Threading.CancellationToken token, System.Net.Http.HttpClient client, FFImageLoading.Work.TaskParameter parameters, FFImageLoading.DownloadInformation downloadInformation) [0x00652] in C:\projects\ffimageloading\source\FFImageLoading.Common\Cache\DownloadCache.cs:163
03-30 21:06:12.525 I/mono-stdout(28576): at FFImageLoading.Cache.DownloadCache+<>c__DisplayClass15_0.<DownloadAndCacheIfNeededAsync>b__0 () [0x00050] in C:\projects\ffimageloading\source\FFImageLoading.Common\Cache\DownloadCache.cs:58
03-30 21:06:12.525 I/mono-stdout(28576): at FFImageLoading.Retry.DoAsync[T] (System.Func`1[TResult] action, System.TimeSpan retryInterval, System.Int32 retryCount, System.Action onRetry) [0x00047] in C:\projects\ffimageloading\source\FFImageLoading.Common\Helpers\Retry.cs:19 <---
可能是什么原因造成的?
【问题讨论】:
-
仅仅因为它适用于您的桌面浏览器并不意味着它适用于移动设备。使用您的设备浏览器进行检查。
-
@jason 在我的电脑浏览器中加载,在我的智能手机中加载,在模拟器中加载部分并在不到一秒后中止
-
我会尝试使用 HttpClient 下载,以便您查看服务器的详细响应
-
@Jason 它说“流的意外结束”,此代码:
Connection: close Content-Length: 4229181 Content-Type: image/png Date: Mon, 30 Mar 2020 21:35:48 GMT Host: 192.168.0.12 X-Android-Received-Millis: 1585604148401 X-Android-Response-Source: NETWORK 200 X-Android-Selected-Protocol: http/1.1 X-Android-Sent-Millis: 1585604148394
标签: xamarin exception io ffimageloading