В отличие от Android или iOS, Microsoft не раскрывает способ глобального изменения пользовательского агента в компоненте WebView.
Для отдельных GET или POST запросов, вы можете установить UA, как это:
Uri^ targetURL = ref new Uri("http://www.yourUrlString.com");
HttpClient^ newRequest = ref new HttpClient();
auto headers = newRequest->DefaultRequestHeaders;
headers->UserAgent->TryParseAdd("your user-agent string here");
create_task(newRequest->GetAsync(targetUrl)).then([=](HttpResponseMessageData^ data)
{
//Your callback here
});
С этой техникой, можно подключиться к WebView's NavigationStarting event и перехватывать каждый запрос, но я настоятельно рекомендую против него ,
WebViewNavigationStartingEventArgs только выведите Uri, на который вы собираетесь переходить, и возможность отменить запрос. Он не раскрывает, какой тип запроса был, и откуда взялось намерение. Из-за этого невозможно воссоздать первоначальное намерение навигации, и вы начнете видеть навигационные ошибки.
Например, некоторые веб-страницы имеют элементы JavaScript, которые делают запросы POST на нажатия кнопок, и если вы перехватываете эти запросы и воссоздаете их как запросы GET, запросы будут терпеть неудачу, и действие пользователя будет потеряно.
До тех пор, пока Microsoft не изменит это поведение в WebView, я не думаю, что можно существенно изменить UA.
Нет реального решения, но, возможно, с использованием API Win32 ['UrlMkSetSessionOption'] (https://msdn.microsoft.com/en-us/library/ms775125 (VS.85) .aspx) может быть полезно с приложениями UWP а также: https://basquang.wordpress.com/2014/04/26/wp8-1-changing-windows-phone-8-1-webview-default-user-agent-in-all-outbound-http-requests/ – sibbl
На самом деле, я нашел путь. Мне нужно отменить навигацию в обработчике WebView Before_NavigationStarting и явно перейти к использованию того же кода с помощью httpsRequestMessage. – user1744147
@sibbl Я пробовал это, хотя он работал нормально на эмулятор устройства повсюду, но мой Windows Phone 8.1 приложение не удалось сертификации в магазине Windows. Пришлось удалить эту ссылку '.dll', чтобы передать ее. Даже если вы вызываете это в событии 'NavigationStarting', это не приведет к тому, что тот же самый« url »будет снова и снова ударяться. – Jerin