首页 新闻 会员 周边

.NET如何识别Request.Broswer

0
悬赏园豆:50 [已解决问题] 解决于 2013-11-10 23:03

我打算使用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;
View Code

请各位指点下,怎么样才能在webapi中正常拿到Browser的值的,最好不要自己解析UserAgent

-已注销-的主页 -已注销- | 初学一级 | 园豆:91
提问于:2013-11-10 14:01
< >
分享
最佳答案
0

client.DefaultRequestHeaders.Add("UserAgent",Request.Headers.UserAgent.ToString()); 在这一句中把UserAgent 改成User-Agent,因为在Http请求中是这样的,试试吧。

收获园豆:40
Zery | 大侠五级 |园豆:6151 | 2013-11-10 14:22
其他回答(1)
0

楼上说的就是正确的,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

收获园豆:10
_A_A | 园豆:1139 (小虾三级) | 2013-11-10 20:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册