public CoreWebView2WebResourceResponse DataLoad(CoreWebView2WebResourceRequest request) { var context = GetQueryParameters(request.Uri); var response = Text(context["Name"]); return(response); }
void NavigateWithWebResourceRequestCmdExecuted(object target, ExecutedRoutedEventArgs e) { // Prepare post data as UTF-8 byte array and convert it to stream // as required by the application/x-www-form-urlencoded Content-Type var dialog = new TextInputDialog( title: "NavigateWithWebResourceRequest", description: "Specify post data to submit to https://www.w3schools.com/action_page.php."); if (dialog.ShowDialog() == true) { string postDataString = "input=" + dialog.Input.Text; UTF8Encoding utfEncoding = new UTF8Encoding(); byte[] postData = utfEncoding.GetBytes( postDataString); MemoryStream postDataStream = new MemoryStream(postDataString.Length); postDataStream.Write(postData, 0, postData.Length); postDataStream.Seek(0, SeekOrigin.Begin); CoreWebView2WebResourceRequest webResourceRequest = WebViewEnvironment.CreateWebResourceRequest( "https://www.w3schools.com/action_page.php", "POST", postDataStream, "Content-Type: application/x-www-form-urlencoded\r\n"); webView.CoreWebView2.NavigateWithWebResourceRequest(webResourceRequest); } }
/// <summary> /// 判断是否JSON格式 /// </summary> /// <param name="request">CoreWebView2WebResourceRequest</param> /// <returns>IsJson</returns> protected bool IsJson(CoreWebView2WebResourceRequest request) { var contentType = request.Headers.GetHeader("Content-Type"); return(string.IsNullOrWhiteSpace(contentType) ? false : Regex.IsMatch(contentType, @"application/json", RegexOptions.IgnoreCase)); }
/// <summary> /// 获取编码方式 /// </summary> /// <param name="request">CoreWebView2WebResourceRequest</param> /// <returns>Encoding</returns> protected Encoding GetEncoding(CoreWebView2WebResourceRequest request) { var encoding = request.Headers.GetHeader("Content-Type"); ; if (string.IsNullOrEmpty(encoding) || !encoding.Contains("charset=")) { encoding = "utf-8"; } else { // match "charset=xxx" var match = Regex.Match(encoding, @"(?<=charset=)(([^;,\r\n]))*"); if (match.Success) { encoding = match.Value; } } return(Encoding.GetEncoding(encoding)); }
/// <summary> /// 异步函数 执行请求委托 /// </summary> /// <param name="request"></param> /// <returns></returns> public Task <CoreWebView2WebResourceResponse> ExecuteCoreAsync(CoreWebView2WebResourceRequest request) => Task.Run(() => Handler?.Invoke(request));
/// <summary> /// 同步函数 执行请求委托 /// </summary> /// <param name="request"></param> /// <returns></returns> public CoreWebView2WebResourceResponse ExecuteCore(CoreWebView2WebResourceRequest request) => Handler?.Invoke(request);
/// <summary> /// 将 Request Json 数据反序列化 /// </summary> /// <param name="request">CoreWebView2WebResourceRequest</param> /// <typeparam name="T">T</typeparam> /// <returns>T</returns> protected T DeserializeRequestJson <T>(CoreWebView2WebResourceRequest request) { if (!IsJson(request)) { return(default);