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とリクエストをキャンセルする機能のみを公開しています。それは、どんなタイプの要求であったのか、その意図がどこから来たのかを明らかにしません。このため、元のナビゲーション意図を再現することは不可能であり、ナビゲーションバグが表示されるようになります。
たとえば、ボタンのクリック時にPOST要求を行うJavaScript要素があるWebページや、これらの要求を傍受してGET要求として再作成すると、要求が失敗し、ユーザーの処理が失われます。
MicrosoftがWebViewでこの動作を変更するまで、私はUAを意味のある変更が可能ではないと思います。
実際のソリューションはありませんが、Win32 API ['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