1. 浏览器访问服务端时,Http请求头上会带上客户端一些信息,可通过“user-agent”获取。
//java获取方法如下,其他语言也有自己获取方法
String agentStr = request.getHeader("user-agent");Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36
2. 一般的方法是通过正则表达式解析字符串获取,在此我们直接使用第三方类库UserAgentUtils获取。
1. 访问http://mvnrepository.com/
2. 搜索“UserAgentUtils”
这里我们下载第二个,2014年更新的。如果使用第一个,用IE11访问时,无法获取浏览器类型。
IE11于2013年11月07日随Windows8.1发行。
三、编写测试代码
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String agentStr = request.getHeader("user-agent"); System.out.println(agentStr); UserAgent agent = UserAgent.parseUserAgentString(agentStr); //浏览器 Browser browser = agent.getBrowser(); System.out.println("类型:"+browser.getBrowserType()+ " 名称:"+browser.getName()+ " 厂商:"+browser.getManufacturer()+ " 产品系列:"+browser.getGroup()+ " 引擎:"+browser.getRenderingEngine()); //浏览器版本 Version version = agent.getBrowserVersion(); System.out.println("========================"); System.out.println("主版本:"+version.getMajorVersion()+ " 小版本:"+version.getMinorVersion()+ " 完整版本:"+version.getVersion()); //操作系统 System.out.println("========================"); OperatingSystem os = agent.getOperatingSystem(); System.out.println("名称:"+os.getName()+ " 设备类型:"+os.getDeviceType()+ " 产品系列:"+os.getGroup()+ " 生成厂商:"+os.getManufacturer()); }四、测试
测试报告:
操作系统:windowsXP、windows7、windows8.1、MAC OS X、android4.4
浏览器:IE7、IE8、IE11、Firefox、Chrome
用事们的设备测试了下,在以上环境下都成功了。其他环境应该也没有问题。