私のアプリからUser-agentをサーバーに送信する必要があります。WP7プログラマブルにUserAgentを作成する
「Mozilla/4.0(MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; HTC; HD7 T9292)」 上記はサンプルユーザーエージェントです。何も思いつきません。ユーザエージェントを形成するためにプログラム的に得られるすべての価値は何か?誰でも助けてもらえますか?
私のアプリからUser-agentをサーバーに送信する必要があります。WP7プログラマブルにUserAgentを作成する
「Mozilla/4.0(MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; HTC; HD7 T9292)」 上記はサンプルユーザーエージェントです。何も思いつきません。ユーザエージェントを形成するためにプログラム的に得られるすべての価値は何か?誰でも助けてもらえますか?
IE7モバイルのユーザーエージェントのように見えます。私はあなたがIEMobileを書いていないと仮定しているので、あなたのアプリは異なるユーザーエージェント名/識別子を持つでしょう。あなたのアプリからWebリクエストを行っている場合、あなたのアプリは組み込みのブラウザとは異なるユーザーエージェントです。
SDKは、サンプル内のユーザーエージェントを構成する個々の要素をすべて取得する方法を公開していません。
あなたが本当にあなたのアプリの中から、ブラウザのユーザーエージェントを取得したい場合、あなたはおそらく、WebBrowserコントロールを含め、その後navigator.userAgent
でJavascriptを経由して、それを抽出することです行うことができますが、私はあれば知らない最高それはサポートされています。サポートされている場合は、windows.external.notify
を使用してコードに戻すことができます。
レコードの場合、デバイス名はUser-Agentの必須部分ではありません。
マンゴーのグローバルUser-Agent文字列は次のようになります。
Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)
私は、スクリプトをロードし、一時的なWebブラウザーを作成し、awaitableのuserAgentを返します。このヘルパーを作っ:
internal static class UserAgentHelper
{
private const string Html = @"<!DOCTYPE html><html><body onload=""window.external.notify(navigator.userAgent);""></body></html>";
public static Task<string> GetUserAgent()
{
var tcs = new TaskCompletionSource<string>();
var browser = new WebBrowser { IsScriptEnabled = true };
browser.ScriptNotify += (sender, args) => tcs.SetResult(args.Value);
browser.NavigateToString(Html);
return tcs.Task;
}
}
使用法:それは、少なくともWP7.1とWP8.0のために働く
var userAgent = await UserAgentHelper.GetUserAgent();
:
WP7: "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Microsoft; XDeviceEmulator)";
WP8: "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; Microsoft; Virtual)";
Webブラウザでユーザーエージェントを取得する必要がある場合は、Webブラウザーをビジュアルツリーに追加する必要があります。その後、私はユーザーエージェントを取得することができます。ホームページ自体では、Webブラウザが表示され、削除すると消えます。これのために何か別の回避策がありますか? – saikamesh
@saikamesh私はあなたのメナは何をしているのではないですが、コントロールを非常に小さくするか、可視領域外にするか、それとも目の前に別のコントロールを追加して可視にならないようにすることができます。コントロールの不透明度を0に設定すると、それでも機能することがあります。 –