locked
Universal App WebView Useragent RRS feed

  • 问题

  • 现在在开发一个app,有一部分业务需要在WebView中进行。在打开网页时,网页会通过navigator.useragent来判断useragent是否包含特定的字符来判断网页是否在客户端内打开。

    在windows phone 8.0的webbrowser控件中,调用如下代码

    wb.Navigate(new Uri(url), null, "customerUserAgent/1.0");来改变webbrowser的useragent,在asp.net的HttpContext.Current.Request.UserAgent中可以正常取到"customerUserAgent/1.0",可是使用navigator.useragent只能取到webbrowser的默认useragent。

    在Universal App 的webview中,调用如下代码也会出现和webbrowser中同样的问题

                var hrm = new HttpRequestMessage();
                HttpProductInfoHeaderValue ua = new HttpProductInfoHeaderValue("customerUserAgent", "1.0");
                hrm.Headers.UserAgent.Add(ua);
                wb.NavigateWithHttpRequestMessage(hrm);

    请问是否还有其他的方法能够通过navigator.useragent来取到自定义的useragent。

    谢谢

    2014年12月24日 2:38

答案

  • 你好,

    我觉得你的问题和如何在RT APP中修改WebView的Useragent有关,可看我之前回复的帖子:https://social.msdn.microsoft.com/Forums/zh-CN/61c9d619-c1ba-4594-8b11-63f771a75442/webview-?forum=wpappszh

    我们可以使用 UrlMkSetSessionOption 去修改当前网络会话的User-Agent:

    [DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
    private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);
    
    const int URLMON_OPTION_USERAGENT = 0x10000001;
    public void ChangeUserAgent(string Agent)
    {
                UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, Agent, Agent.Length, 0);
    }
    
    private void WebView_Loaded(object sender, RoutedEventArgs e)
    {
                ChangeUserAgent("Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36");
                string url = "ms-appx-web:///HTMLPage1.html";
                ((WebView)sender).Navigate(new Uri(url));
    }

    以上方式经过测试可以正确修改UserAgent


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年12月25日 5:36
    版主

全部回复

  • 你好,

    我觉得你的问题和如何在RT APP中修改WebView的Useragent有关,可看我之前回复的帖子:https://social.msdn.microsoft.com/Forums/zh-CN/61c9d619-c1ba-4594-8b11-63f771a75442/webview-?forum=wpappszh

    我们可以使用 UrlMkSetSessionOption 去修改当前网络会话的User-Agent:

    [DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
    private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);
    
    const int URLMON_OPTION_USERAGENT = 0x10000001;
    public void ChangeUserAgent(string Agent)
    {
                UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, Agent, Agent.Length, 0);
    }
    
    private void WebView_Loaded(object sender, RoutedEventArgs e)
    {
                ChangeUserAgent("Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36");
                string url = "ms-appx-web:///HTMLPage1.html";
                ((WebView)sender).Navigate(new Uri(url));
    }

    以上方式经过测试可以正确修改UserAgent


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年12月25日 5:36
    版主
  • hi,这种通过调用Win32的代码无法通过市场审核吧?

    2015年9月14日 6:55