none
webview 能修改浏览器标头吗? RRS feed

答案

  • 你好,

    NailClipper 的代码虽然在本地Debug模式下可以运行,但是发布到应用商店时,会验证不成功,原因是你使用了Win32的API,应用商店不能提交不安全的代码,而你所说的用webView修改User-Agent,我觉得你还是没有理解我上面的回复,修改User-Agent你得用HttpRequestMessage,设置完你的User-Agent后,你可以用WebView的NavigateWithHttpRequestMessage方法去导航到对应得页面,下面是我修改后的代码:

    using (var httpClient = new HttpClient())
                {
                    var url = new Uri("http://bing.com");
                    var accessToken = "1234";
                    using (var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, url))
                    {
                        httpRequestMessage.Headers.Add(System.Net.HttpRequestHeader.Authorization.ToString(),
                          string.Format("Bearer {0}", accessToken));
                        httpRequestMessage.Headers.Add("User-Agent", "your custom user agent");
                        webview.NavigateWithHttpRequestMessage(httpRequestMessage);
                    }
                }


    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.

    • 已标记为答案 moyunhua 2015年9月15日 15:51
    2015年9月10日 9:57
    版主

全部回复

  • 你好,

    我不是很明白你的意思,为什么在PC端使用时将Http Header改成手机端,能具体说下你想要实现怎样的效果吗?也许会有更好的实现方法。

    另外,Http Header中的 User-Agent,它包含一些浏览器的版本等信息,如果你是想要设置User-Agent,在WinRT中,你需要使用httpRequestMessage.Headers.Add()方法去设置你的User-Agent,具体可以参考我的代码:

    using (var httpClient = new HttpClient())
                {
                    var url = new Uri("http://bing.com");
                    var accessToken = "1234";
                    using (var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, url))
                    {
                        httpRequestMessage.Headers.Add(System.Net.HttpRequestHeader.Authorization.ToString(),
                          string.Format("Bearer {0}", accessToken));
                        httpRequestMessage.Headers.Add("User-Agent", "your custom user agent");
                        using (var httpResponseMessage = await httpClient.SendAsync(httpRequestMessage))
                        {
                            // do something with the response
                            var data = httpRequestMessage.Content;
                        }
                    }
                }

    关于“User-Agent”,可以参考这个文档: https://msdn.microsoft.com/en-us/library/hh869301(v=vs.85).aspx


    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.

    2015年9月9日 10:11
    版主
  • 你好,感谢回复!

    是的,我就是要改变访问的 User-Agent ,但不是使用 httpClient,而是要使用  webview ,改变 webview 的 User-Agent !

    至于为什么要改变 webview 的 User-Agent ,是项目的实际需要。


    • 已编辑 moyunhua 2015年9月9日 14:57
    2015年9月9日 14:56
  • 可以在应用启动的时候执行下面一段代码,替换UserAgent就可以了

      [DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
            private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);
    
            public void ChangeUserAgent(string Agent)
            {
                UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, Agent, Agent.Length, 0);
            }
    

    2015年9月10日 2:18
  • 你好,

    NailClipper 的代码虽然在本地Debug模式下可以运行,但是发布到应用商店时,会验证不成功,原因是你使用了Win32的API,应用商店不能提交不安全的代码,而你所说的用webView修改User-Agent,我觉得你还是没有理解我上面的回复,修改User-Agent你得用HttpRequestMessage,设置完你的User-Agent后,你可以用WebView的NavigateWithHttpRequestMessage方法去导航到对应得页面,下面是我修改后的代码:

    using (var httpClient = new HttpClient())
                {
                    var url = new Uri("http://bing.com");
                    var accessToken = "1234";
                    using (var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, url))
                    {
                        httpRequestMessage.Headers.Add(System.Net.HttpRequestHeader.Authorization.ToString(),
                          string.Format("Bearer {0}", accessToken));
                        httpRequestMessage.Headers.Add("User-Agent", "your custom user agent");
                        webview.NavigateWithHttpRequestMessage(httpRequestMessage);
                    }
                }


    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.

    • 已标记为答案 moyunhua 2015年9月15日 15:51
    2015年9月10日 9:57
    版主
  • hi,现在我们的app中需要针对WebView控件需要进行一些改动 。情况是 这样的

    这边一些Html活动页需要判断是否在客户端中打开,是通过判断浏览器的UserAgent实现的,如果UserAgent中有约定好的值时则为客户端中访问的。如   inapp/7.3.0 

    不知道如何能否实现一次自定义浏览器的UserAgent来实现这个需求?之前使用[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]是可以实现的(项目暂未上线)。

    2015年9月14日 6:39
  • 你好。不好意思,由于我刚接触商城应用开发(之前是搞asp.net的),对 HttpRequestMessage 不了解。经测试用 webview.NavigateWithHttpRequestMessage 可以正确使用 HttpRequestMessage  来修改 User-Agent,非常感谢!

    在以后的开发当中,可能还有很多问需要向各位前辈请教,在此一并感谢!

    2015年9月15日 15:54