我必须从我的应用程序将User-agent发送到服务器。
“Mozilla / 4.0(兼容; MSIE 7.0; Windows Phone OS 7.0; Trident / 3.1; IEMobile / 7.0; HTC; HD7 T9292)” 以上是一个示例用户代理。我不知道。为了形成用户代理,我们可以通过编程方式获得所有值。
答案 0 :(得分:2)
对于记录,设备名称不是User-Agent的必要部分。
Mango的全局User-Agent字符串如下所示:
Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)
答案 1 :(得分:0)
看起来像是HD7上IE7 mobile的用户代理。我假设您没有编写IEMobile,因此您的应用程序将具有不同的用户代理名称/标识符。如果您是从应用程序发出Web请求,那么您的应用程序是内置浏览器的不同用户代理。
SDK没有公开获取样本中构成用户代理的所有单个元素的方法。
如果您真的想从应用程序中获取浏览器的用户代理,那么您可能做的最好的事情就是包含一个WebBrowser控件,然后通过Javascript navigator.userAgent
提取它但我不知道知道它是否得到支持。如果支持,您可以使用windows.external.notify
将其传回给您的代码。
答案 2 :(得分:0)
我做了这个帮助器,它将创建一个临时的WebBrowser,加载一个脚本并返回一个等待的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)";