近来在开发一个基于手机上网的项目。遇到的第一件事情就是,该项目需要同时支持手机和PC。详细的说:当pc登陆上来,访问的是html;当手机登陆上来就是wml。
那我们怎么来判断呢?
入正题,下面说说我的解决办法。
参数userAgent:
有人说可以根据来访的IP来判断,好像是行不通的。当采用wap上网方式还好判断;一旦采用net来访问,往往也是可以获取独立的IP的。
还有人说可以用HTTP_ACCEPT来判断,判断访问过来的终端是否支持wml,这样问题又会出现,如果某个浏览器既能支持wml和html,或者现在很多智能手机既能支持wml和html,你还是没招了!
那我们怎么来判断呢?
入正题,下面说说我的解决办法。
- /**
- * 传入http请求的UserAgent
- * 根据它判断是手机还是电脑发送过来的请求
- * @param userAgent
- * @return
- */
- public static boolean choose(String userAgent) {
- if (userAgent.indexOf("Noki") > -1 || // Nokia phones and emulators
- userAgent.indexOf("Eric") > -1 || // Ericsson WAP phones and emulators
- userAgent.indexOf("WapI") > -1 || // Ericsson WapIDE 2.0
- userAgent.indexOf("MC21") > -1 || // Ericsson MC218
- userAgent.indexOf("AUR") > -1 || // Ericsson R320
- userAgent.indexOf("R380") > -1 || // Ericsson R380
- userAgent.indexOf("UP.B") > -1 || // UP.Browser
- userAgent.indexOf("WinW") > -1 || // WinWAP browser
- userAgent.indexOf("UPG1") > -1 || // UP.SDK 4.0
- userAgent.indexOf("upsi") > -1 || //another kind of UP.Browser
- userAgent.indexOf("QWAP") > -1 || // unknown QWAPPER browser
- userAgent.indexOf("Jigs") > -1 || // unknown JigSaw browser
- userAgent.indexOf("Java") > -1 || // unknown Java based browser
- userAgent.indexOf("Alca") > -1 || // unknown Alcatel-BE3 browser (UP based)
- userAgent.indexOf("MITS") > -1 || // unknown Mitsubishi browser
- userAgent.indexOf("MOT-") > -1 || // unknown browser (UP based)
- userAgent.indexOf("My S") > -1 ||// unknown Ericsson devkit browser
- userAgent.indexOf("WAPJ") > -1 ||//Virtual WAPJAG www.wapjag.de
- userAgent.indexOf("fetc") > -1 ||//fetchpage.cgi Perl script from www.wapcab.de
- userAgent.indexOf("ALAV") > -1 || //yet another unknown UP based browser
- userAgent.indexOf("Wapa") > -1 || //another unknown browser (Web based "Wapalyzer")
- userAgent.indexOf("Oper") > -1) {
- return true;
- } else {
- return false;
- }
- }
参数userAgent:
- String userAgent = request.getHeader("User-Agent");
有人说可以根据来访的IP来判断,好像是行不通的。当采用wap上网方式还好判断;一旦采用net来访问,往往也是可以获取独立的IP的。
还有人说可以用HTTP_ACCEPT来判断,判断访问过来的终端是否支持wml,这样问题又会出现,如果某个浏览器既能支持wml和html,或者现在很多智能手机既能支持wml和html,你还是没招了!