gpt4 book ai didi

c# - 在 UWP 中设置自定义 WebView header

转载 作者:太空狗 更新时间:2023-10-29 20:16:07 25 4
gpt4 key购买 nike

这似乎是其他 similar 的重复问题,但它们是旧线程而不是特定于 Windows UWP 应用程序。

我无法在 WebView 中设置自定义 header ,因此 WebView 中加载的 URL 可以为我工作。

我看到很多论坛都提供了解决方案,比如使用带 header 的 HttpClient/WebRequest,但这在我的情况下不起作用,网址使用 Javascript 进行重定向,在重定向之前它需要很少的自定义 header 才能正确加载。

还有 WebView.NavigateWithHttpRequestMessage不太合适,因为它会回发,我需要每个请求的 header ,包括 web View 中的 javascript 重定向 URL .

我可以使用渲染器在 Xamarin.Droid 项目中设置自定义 header ,但我找不到适用于 UWP Windows.UI.Xaml.Controls.WebView 的任何解决方案。

最佳答案

在通用 Windows 10 平台上,WebView.NavigateWithHttpRequestMessage方法才是正道。

a. I need the headers for each request including javascript redirected URLs in web View.

b. This didn't resolve my issue as after setting the headers the OnWebViewNavigationStarting method is called multiple times and App crashes automatically with System.StackOverflowException error

这是因为如果我们在 NavigationStarting 事件中进行导航,将会发生无限导航。我们应该通过设置 WebViewNavigationStartingEventArgs.Cancel 在此事件的处理程序中取消导航属性为 true

我们需要小心地为 NavigationStarting 事件添加/删除处理程序。

代码示例:

    private void NavigateWithHeader(Uri uri)
{
var requestMsg = new Windows.Web.Http.HttpRequestMessage(HttpMethod.Get, uri);
requestMsg.Headers.Add("User-Name", "Franklin Chen");
wb.NavigateWithHttpRequestMessage(requestMsg);

wb.NavigationStarting += Wb_NavigationStarting;
}

private void Button_Click(object sender, RoutedEventArgs e)
{
NavigateWithHeader(new Uri("http://openszone.com/RedirectPage.html"));
}

private void Wb_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
wb.NavigationStarting -= Wb_NavigationStarting;
args.Cancel = true;//cancel navigation in a handler for this event by setting the WebViewNavigationStartingEventArgs.Cancel property to true
NavigateWithHeader(args.Uri);
}

截图为Fiddler中的日志信息,第二个红色矩形中的请求记录包含自定义 header :

enter image description here

我在 here 中分享了我的 UWP 示例,您可以轻松地集成到您的 Xamarin UWP 应用中。

关于c# - 在 UWP 中设置自定义 WebView header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39165442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com