WP7 Формирует UserAgent программно - PullRequest
1 голос
/ 28 июля 2011

Мне нужно отправить User-agent на сервер из моего приложения.

"Mozilla / 4.0 (совместимо; MSIE 7.0; ОС Windows Phone 7.0; Trident / 3.1; IEMobile / 7.0; HTC; HD7 T9292)" Выше приведен пример пользовательского агента. Я понятия не имею. Какие все значения мы можем получить программно, чтобы сформировать user-agent.

Ответы [ 3 ]

2 голосов
/ 28 июля 2011

Для записи имя устройства не является обязательной частью User-Agent.

Глобальная строка User-Agent для Mango выглядит следующим образом:

Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)
0 голосов
/ 20 апреля 2014

Я сделал этот помощник, который создаст временный веб-браузер, загрузит скрипт и вернет ожидаемого 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;
    }
}

Использование:

var userAgent = await UserAgentHelper.GetUserAgent();

Это работает как минимум для WP7.1 и WP8.0:

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)";
0 голосов
/ 28 июля 2011

Это похоже на пользовательский агент мобильного IE7 на HD7. Я предполагаю, что вы не пишете IEMobile, и поэтому ваше приложение будет иметь другое имя / идентификатор агента пользователя. Если вы делаете веб-запросы из своего приложения, тогда ваше приложение является агентом пользователя, отличным от встроенного браузера.

В SDK не представлен способ получения всех отдельных элементов, составляющих пользовательский агент в вашем образце.

Если вы действительно хотите получить пользовательский агент браузера из своего приложения, лучшее, что вы могли бы сделать, это включить элемент управления WebBrowser, а затем извлечь его через Javascript с помощью navigator.userAgent, но я не знаю если это поддерживается. Если он поддерживается, вы можете передать его обратно в свой код, используя windows.external.notify.

...