WebView не является универсальным браузером, у него есть некоторые «ограничения», которые не поддерживаются сейчас. API не может установить User-Agent по умолчанию, который используется в каждом запросе. В качестве обходного пути мы можем использовать WebView.NavigationStarting event вместе с WebView.NavigateWithHttpRequestMessage method, чтобы установить User-Agent в каждом запросе.
Для получения дополнительной информации о том, как это сделать, обратитесь к this answer. Ключевой момент здесь является удаление обработчика NavigationStarting
события и отмены навигации в первоначальном запросе, а затем добавить обработчик после NavigateWithHttpRequestMessage
, чтобы убедиться, что NavigationStarting
события может захватить следующие запросы как следующие:
WebView wb = new WebView();
wb.NavigationStarting += Wb_NavigationStarting;
...
private void NavigateWithHeader(Uri uri)
{
var requestMsg = new Windows.Web.Http.HttpRequestMessage(HttpMethod.Get, uri);
requestMsg.Headers.Add("User-Agent", "blahblah");
wb.NavigateWithHttpRequestMessage(requestMsg);
wb.NavigationStarting += Wb_NavigationStarting;
}
private void Wb_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
wb.NavigationStarting -= Wb_NavigationStarting;
args.Cancel = true;
NavigateWithHeader(args.Uri);
}
Кроме того, вы можете голосование на UserVoice, чтобы поделиться своими отзывами.
Вот хитроумный трюк: https://gist.github.com/mattdot/3b53af7756c061e06f60623c766f657a – Laith