public override WebResourceResponse ShouldInterceptRequest(WebView view, IWebResourceRequest request) { if (request.Url.Scheme == Uri.UriSchemeFile) return null; if (SkipLoading(request.Url.LastPathSegment)) return null; var baseResponse = base.ShouldInterceptRequest(view, request); try { var result = Task.Run(async () => { using (var c = new HttpClient { Timeout = TimeSpan.FromSeconds(TimeOut) }) { var response = await c.GetAsync(request.Url.ToString()); var content = await response.Content.ReadAsStreamAsync(); return new WebResourceResponse(baseResponse.MimeType, "UTF-8", (int)response.StatusCode, response.ReasonPhrase, null, content); } }).Result; return result; } catch (AggregateException e) { return baseResponse; } }
public override WebResourceResponse ShouldInterceptRequest (WebView view, IWebResourceRequest request) { var uri = new Uri (request.Url.ToString ()); int index; if ((index = related.IndexOf (uri)) != -1) { var part = related[index] as MimePart; if (part != null) { var mimeType = part.ContentType.MimeType; var stream = part.ContentObject.Open (); var charset = part.ContentType.Charset; return new WebResourceResponse (mimeType, charset, stream); } } return base.ShouldInterceptRequest (view, request); }
public override bool ShouldOverrideUrlLoading (WebView view, IWebResourceRequest request) { var url = request.Url.ToString() ; EventHandler<WebViewLocaitonChangedEventArgs> handler = WebViewLocaitonChanged; if (null != handler) { handler (this, new WebViewLocaitonChangedEventArgs { CommandString = url }); if (url.Contains ("callfrompage://Hi")) { return false; } } return base.ShouldOverrideUrlLoading (view, request ); }
public override void OnReceivedHttpError(WebView view, IWebResourceRequest request, WebResourceResponse errorResponse) { base.OnReceivedHttpError(view, request, errorResponse); }
public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request) { view.LoadUrl((string)request.Url); return(true); }
// For API level 24 and later public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request) { view.LoadUrl(request.Url.ToString()); return(false); }
// NOTE: pulled fix from this unmerged PR - https://github.com/SKLn-Rad/Xam.Plugin.Webview/pull/104 public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, IWebResourceRequest request) { if ((view as WebViewEx).Disposed) { return(base.ShouldOverrideUrlLoading(view, request)); } if (!CheckResponseValidity(view, request.Url.ToString())) { return(true); } if (Reference == null || !Reference.TryGetTarget(out FormsWebViewRenderer renderer) || renderer?.Element?.BaseUrl == null) { return(base.ShouldOverrideUrlLoading(view, request)); } if (!request.Url.ToString().ToLower().StartsWith(renderer.Element.BaseUrl.ToLower()) || FormsWebView.GlobalRegisteredHeaders.Count == 0) { return(base.ShouldOverrideUrlLoading(view, request)); } if (request.RequestHeaders != null) { // Is recursive request? (check for our custom headers) bool needCustomHeader = false; foreach (var header in FormsWebView.GlobalRegisteredHeaders) { if (!request.RequestHeaders.ContainsKey(header.Key)) { needCustomHeader = true; break; } } if (!needCustomHeader) { return(false); } } // Add Additional headers var headers = new Dictionary <string, string>(); if (request.RequestHeaders != null) { foreach (var header in request.RequestHeaders) { headers.Add(header.Key, header.Value); } } foreach (var header in FormsWebView.GlobalRegisteredHeaders) { if (!headers.ContainsKey(header.Key)) { headers.Add(header.Key, header.Value); } } view.LoadUrl(request.Url.ToString(), headers); return(true); //return base.ShouldOverrideUrlLoading(view, request); }
public override WebResourceResponse ShouldInterceptRequest(WebView view, IWebResourceRequest request) { return(base.ShouldInterceptRequest(view, request)); }
public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, IWebResourceRequest request) { return(_renderer?.ShouldOverrideUrlLoading(view, request.Url.ToString()) ?? base.ShouldOverrideUrlLoading(view, request)); }
public override WebResourceResponse ShouldInterceptRequest(WebView view, IWebResourceRequest request) { return(request.HasGesture ? base.ShouldInterceptRequest(view, request) : null); }
// API 21+ public override void OnReceivedError(WebView view, IWebResourceRequest request, WebResourceError error) { ConsoleLog(view, error.ToString()); base.OnReceivedError(view, request, error); }
public override void OnReceivedError(WebView view, IWebResourceRequest request, WebResourceError error) { try { base.OnReceivedError(view, request, error); string TextError = Application.Context.GetString(Resource.String.Lbl_Error_Code) + " "; switch (error.ErrorCode) { case ClientError.BadUrl: TextError = ErrorBadUrl.ToString(); break; case ClientError.Connect: TextError += ErrorConnect.ToString(); break; case ClientError.FailedSslHandshake: TextError += ErrorFailedSslHandshake.ToString(); break; case ClientError.File: TextError += ErrorFile.ToString(); break; case ClientError.FileNotFound: TextError += ErrorFileNotFound.ToString(); break; case ClientError.HostLookup: TextError += ErrorHostLookup.ToString(); break; case ClientError.ProxyAuthentication: TextError += ErrorProxyAuthentication.ToString(); break; case ClientError.Timeout: TextError += ErrorTimeout.ToString(); break; case ClientError.TooManyRequests: TextError += ErrorTooManyRequests.ToString(); break; case ClientError.Unknown: TextError += ErrorUnknown.ToString(); break; case ClientError.UnsafeResource: TextError += ErrorUnsafeResource.ToString(); break; case ClientError.UnsupportedScheme: TextError += ErrorUnsupportedAuthScheme.ToString(); break; case ClientError.Io: TextError += ErrorIo.ToString(); break; } OnPageEventReceivedError?.Invoke(view, request, error, TextError); } catch (Exception e) { Crashes.TrackError(e); } }
public override WebResourceResponse ShouldInterceptRequest(WebView view, IWebResourceRequest request) { try { Logger.Info($"Requested Url: {request.Url.ToString()}"); var urlToFetch = request.Url.ToString().Replace(Constants.BufferText, string.Empty); var isHttpRequest = request.Url.Scheme == "https"; if (isHttpRequest && !urlToFetch.Contains("favicon")) { var requestHeaders = request.RequestHeaders; if (requestHeaders.ContainsKey("Range")) { var options = new WebFetchOptions { Range = RequestHelpers.RangeStringToArray(requestHeaders["Range"]) }; var task = WebFetchService.FetchResourceAsync(urlToFetch, options); var safeResponse = task.WaitAndUnwrapException(); var stream = new MemoryStream(safeResponse.Data); var response = new WebResourceResponse(safeResponse.MimeType, "UTF-8", stream); response.SetStatusCodeAndReasonPhrase(206, "Partial Content"); response.ResponseHeaders = new Dictionary <string, string> { { "Accept-Ranges", "bytes" }, { "content-type", safeResponse.MimeType }, { "Content-Range", safeResponse.Headers["Content-Range"] }, { "Content-Length", safeResponse.Headers["Content-Length"] }, }; if (_renderer.TryGetTarget(out HybridWebViewRenderer webviewRenderer)) { webviewRenderer.SetCurrentPageVersion(safeResponse.CurrentNrsVersion); webviewRenderer.SetLatestPageVersion(safeResponse.LatestNrsVersion); } return(response); } else { var safeResponse = WebFetchService.FetchResourceAsync(urlToFetch).Result; var stream = new MemoryStream(safeResponse.Data); var response = new WebResourceResponse(safeResponse.MimeType, "UTF-8", stream); if (_renderer.TryGetTarget(out HybridWebViewRenderer webviewRenderer)) { webviewRenderer.SetCurrentPageVersion(safeResponse.CurrentNrsVersion); webviewRenderer.SetLatestPageVersion(safeResponse.LatestNrsVersion); } return(response); } } } catch (Exception ex) { Logger.Error(ex); if (ex.InnerException != null) { using (var stream = new MemoryStream()) { var response = new WebResourceResponse("text/html", "UTF-8", stream); response.SetStatusCodeAndReasonPhrase(404, "Not Found"); return(response); } } } return(base.ShouldInterceptRequest(view, request)); }
public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request) //vt. Android.Webkit doku { view.LoadUrl(request.Url.ToString()); //sebview vahetab lehte ilma välisesse browserisse minemast return(base.ShouldOverrideUrlLoading(view, request)); }
public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request) { //TODO: check for external links and do something else with them return(base.ShouldOverrideUrlLoading(view, request)); }
public override void OnReceivedError(WebView view, IWebResourceRequest request, WebResourceError error) { base.OnReceivedError(view, request, error); }
public override void OnReceivedHttpError(Android.Webkit.WebView view, IWebResourceRequest request, WebResourceResponse errorResponse) { base.OnReceivedHttpError(view, request, errorResponse); Android.Util.Log.Error(logTag, $"OnReceivedError: {errorResponse.ReasonPhrase}, Url:{request.Url.EncodedSchemeSpecificPart}"); }
public override WebResourceResponse ShouldInterceptRequest(Android.Webkit.WebView view, IWebResourceRequest request) { if (Reference == null || !Reference.TryGetTarget(out FormsWebViewRenderer renderer)) { goto EndShouldInterceptRequest; } if (renderer.Element == null) { goto EndShouldInterceptRequest; } string url = request.Url.ToString(); var response = renderer.Element.HandleNavigationStartRequest(url); if (response.Cancel || response.OffloadOntoDevice) { Device.BeginInvokeOnMainThread(() => { if (response.OffloadOntoDevice) { AttemptToHandleCustomUrlScheme(view, url); } view.StopLoading(); }); } EndShouldInterceptRequest: return(base.ShouldInterceptRequest(view, request)); }
public override void OnReceivedError(WebView view, IWebResourceRequest request, WebResourceError error) { base.OnReceivedError(view, request, error); App.GemWriteLine("JWChineseWebViewClient.OnReceivedError", error.Description); }
public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request) { return(false); }
public override void OnReceivedError(WebView view, IWebResourceRequest request, WebResourceError error) { base.OnReceivedError(view, request, error); System.Diagnostics.Debug.WriteLine("HeatMapWebClient error: " + error.Description); }
// api 24+ public override bool ShouldOverrideUrlLoading(WView view, IWebResourceRequest request) => SendNavigatingCanceled(request?.Url?.ToString());
public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, IWebResourceRequest request) { try { var loadIntent = new Intent(Intent.ActionView); loadIntent.SetData(request.Url); view.Context.StartActivity(loadIntent); return(true); } catch { return(base.ShouldOverrideUrlLoading(view, request)); } }
public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request) { Methods.App.OpenbrowserUrl(Activity, request.Url.ToString()); view.LoadDataWithBaseURL(null, Activity.DataWebHtml, "text/html", "UTF-8", null); return(true); }
public override void OnReceivedError(Android.Webkit.WebView view, IWebResourceRequest request, WebResourceError error) { base.OnReceivedError(view, request, error); _taskCompletionSource.SetResult(new ToFileResult(true, error.Description)); }
//************************************************************************************************************************ // ADDED TO DECIDE AND HANDLE CONTENTTYPE (application/pdf) BY LOADING CONTENT IN SEPARATE HTTPCLIENT BEFORE SHOWING IN WEBVIEW /// <summary> /// Shoulds the intercept request. Raise OnContentTypeLoaded to webview with content type /// </summary> /// <returns>The intercept request.</returns> /// <param name="view">View.</param> /// <param name="request">Request.</param> public override WebResourceResponse ShouldInterceptRequest(Android.Webkit.WebView view, IWebResourceRequest request) { if (Reference == null || !Reference.TryGetTarget(out FormsWebViewRenderer renderer)) { return(null); } if (renderer.Element == null) { return(null); } if (request == null || request.Url == null) { return(null); } //It seems that post methods doesn't get captured by webviews OnPageStarted method. Needs to handle this manually to raise WhenNavigationStarted in WebViewPage if (!string.IsNullOrEmpty(request.Method) && request.Method.Equals("POST")) { renderer.Element.HandleNavigationStartRequest(request.Url.ToString()); } return(base.ShouldInterceptRequest(view, request)); }
public override void OnReceivedHttpError(Android.Webkit.WebView view, IWebResourceRequest request, WebResourceResponse errorResponse) { base.OnReceivedHttpError(view, request, errorResponse); _taskCompletionSource.SetResult(new ToFileResult(true, errorResponse.ReasonPhrase)); }
public override WebResourceResponse ShouldInterceptRequest(Android.Webkit.WebView view, IWebResourceRequest request) { //if (request.Method == "POST") //{ // view.StopLoading(); //} return(base.ShouldInterceptRequest(view, request)); }
public override void OnReceivedError(WebView view, IWebResourceRequest request, WebResourceError error) { base.OnReceivedError(view, request, error); Toast.MakeText(context, "Error loading " + error.ErrorCode + " " + error.Description, ToastLength.Long); }
public override bool ShouldOverrideUrlLoading(WebView view, IWebResourceRequest request) { return(base.ShouldOverrideUrlLoading(view, request)); }
public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, IWebResourceRequest request) { return(((NavigationRequestedDelegate)Element.InvokeEvent(WebViewEventType.NavigationRequested, new NavigationRequestedDelegate(Element, request.Url.ToString()))).Cancel); }
public override WebResourceResponse ShouldInterceptRequest (Android.Webkit.WebView view, IWebResourceRequest request) { Console.WriteLine ("[Custom Delegate] Url: {0}", request.Url); return base.ShouldInterceptRequest (view, request); }
public override void OnReceivedError(Android.Webkit.WebView view, IWebResourceRequest request, WebResourceError error) { LoadError?.Invoke(error.Description); base.OnReceivedError(view, request, error); }
public override WebResourceResponse ShouldInterceptRequest(WebView view, IWebResourceRequest request) { var s = request.RequestHeaders.ToList(); return(base.ShouldInterceptRequest(view, request)); }
public override void OnReceivedError(Android.Webkit.WebView view, IWebResourceRequest request, WebResourceError error) { base.OnReceivedError(view, request, error); Android.Util.Log.Error(logTag, $"OnReceivedError: {error.Description}, Url:{request.Url.Path}"); }