我打算使用HttpClient来访问一个webapi,这个webapi中会判断浏览器类型
问题是,我在这个webapi中取值的结果如下,始终不能通过
HttpContext.Current.Request.Browser.Browser来获取浏览器类型
HttpContext.Current.Request.Headers["UserAgent"] //Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 HttpContext.Current.Request.Browser.Browser //Unknown Request.Headers.UserAgent //获取不到,空的
我是这样向HttpClient中添加UserAgent的
HttpClientHandler httpClientHandler = new HttpClientHandler() { CookieContainer = cookiecontainer, AllowAutoRedirect = true, UseCookies = true }; HttpClient client = new HttpClient(httpClientHandler); client.DefaultRequestHeaders.Referrer = Request.Headers.Referrer; client.DefaultRequestHeaders.Add("UserAgent",Request.Headers.UserAgent.ToString()); HttpResponseMessage result = client.PostAsync("http://demoapi.com/api/demo/?xxx=xxx", new StringContent(string.Empty)).Result;
请各位指点下,怎么样才能在webapi中正常拿到Browser的值的,最好不要自己解析UserAgent
client.DefaultRequestHeaders.Add("UserAgent",Request.Headers.UserAgent.ToString()); 在这一句中把UserAgent 改成User-Agent,因为在Http请求中是这样的,试试吧。
楼上说的就是正确的,Request.Headers.UserAgent获取的是User-Agent。
另外,在app_browsers里面可以定义自己的规则来匹配特殊的客户端useragent
楼主可以用fiddler之类的工具随便监听一个请求就知道发送的请求头都是什么样的了
具体可以看看这里:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
或者这里:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields