示例#1
0
        public VideoViewRenderer(Context context) : base(context)
        {
            // https://github.com/square/okhttp/issues/3372
            httpClient ??= new OkHttpClient().NewBuilder()
            .WriteTimeout(5, Java.Util.Concurrent.TimeUnit.Minutes)
            .ReadTimeout(5, Java.Util.Concurrent.TimeUnit.Minutes)
            .AddInterceptor(chain =>
            {
                var request = chain.Request();

                try
                {
                    var response = chain.Proceed(request);
                    if (response.IsSuccessful)
                    {
                        var body          = response.Body();
                        var contentLength = body.ContentLength();
                        StreamingResponse?.Invoke(this, new StreamingResponseEventArgs(contentLength));
                    }
                    return(response);
                }
                catch (Java.IO.InterruptedIOException ex)
                {
                    var contentLength = ex.BytesTransferred;
                    StreamingResponse?.Invoke(this, new StreamingResponseEventArgs(contentLength));
                    PlaybackError?.Invoke(this, new PlaybackErrorEventArgs(ex));
                    return(DefaultEmptyHttpResponse(request));
                }
                catch (Exception ex)
                {
                    if (ex is Java.Net.ConnectException)
                    {
                    }
                    if (ex is Java.Net.UnknownHostException)
                    {
                        // probably no internet
                    }
                    PlaybackError?.Invoke(this, new PlaybackErrorEventArgs(ex));
                    return(DefaultEmptyHttpResponse(request));
                }
            })
            .Build();
        }